Как я могу получить текущее время в миллисекундах на С++ 17 с помощью boost или стандартной библиотеки? Я попытался использовать std::chrono:
int main()
{
const auto currentDateTime = std::chrono::system_clock::now();
const auto currentDateTimeTimeT = std::chrono::system_clock::to_time_t(currentDateTime);
const auto currentDateTimeLocalTime = *std::gmtime(¤tDateTimeTimeT);
char currentDateTimeArrStr[100];
std::strftime(currentDateTimeArrStr, 100, "%Y%m%d_%H%M%S.%f", ¤tDateTimeLocalTime);
std::clog << std::string(currentDateTimeArrStr) << std::endl;
}
Но формат %f
реализован только в функции strftime
python не в C++, а с повышением:
int main()
{
const auto date = boost::gregorian::day_clock::universal_day();
boost::gregorian::date d(date.year(), date.month(), date.day());
const auto time = boost::posix_time::second_clock::universal_time().time_of_day();
boost::posix_time::time_duration td(time.hours(), time.minutes(), time.seconds(), time.fractional_seconds());
std::stringstream ss;
ss << d << ' ' << td;
boost::posix_time::ptime pt(not_a_date_time);
ss >> pt;
std::cout << pt << std::endl;
}
Но буст API дает только total_milliseconds
.
Мне нужен такой вывод: 12:02:34.323232
12:02:34.323232
. Конечно, это означает, что вам нужно время в микросекундах (чтобы иметь 6 знаков после запятой - миллисекунды будут только 3 знаками после запятой). - person Paul Floyd   schedule 22.07.2020