Проблема с написанием функции для преобразования времени
У меня мало опыта в C++ и библиотека chrono показалась сложноватой для восприятия, поэтому решил немного упростить и убрать boiler-plate. Класс EpochTime должен предоставлять время с начала эпохи, выраженное в разных временных промежутках. Уже есть приватный метод для получения наносекунд. Нужно написать метод для преобразования наносекунд в данную единицу измерения:
#include <iostream>
#include <chrono>
class EpochTime {
private:
static std::chrono::nanoseconds since_epoch()
{
return std::chrono::high_resolution_clock::now().time_since_epoch();
}
static long get(? duration_unit)//
{ /**
duration_unit: std::chrono::milliseconds,
std::chrono::microseconds,
std::chrono::nanoseconds
и так далее...
*/
return ?;
}
public:
static long hours() { return EpochTime::get(std::chrono::hours); }
static long minutes() { return EpochTime::get(std::chrono::minutes); }
static long seconds() { return EpochTime::get(std::chrono::seconds); }
static long milliseconds() { return EpochTime::get(std::chrono::milliseconds); }
static long microseconds() { return EpochTime::get(std::chrono::microseconds); }
static long nanoseconds() { return EpochTime::get(std::chrono::nanoseconds); }
};
int main()
{
std::cout << EpochTime::hours();
return 0;
}
duration_unit
- собственно единица измерения из chrono. Возникает вопрос о типе этого аргумента и как правильно его передать в duration_cast
.
Источник: Stack Overflow на русском