如何用小数秒将std::chrono::time_point
转换为日历日期时间字符串?
例如:
"10-10-2012 12:38:40.123456"
最佳答案
如果是system_clock,则此类具有time_t转换。
#include <iostream>
#include <chrono>
#include <ctime>
using namespace std::chrono;
int main()
{
system_clock::time_point p = system_clock::now();
std::time_t t = system_clock::to_time_t(p);
std::cout << std::ctime(&t) << std::endl; // for example : Tue Sep 27 14:21:13 2011
}
示例结果:
Thu Oct 11 19:10:24 2012
编辑:
但是,time_t不包含小数秒。
另一种方法是使用time_point::time_since_epoch()函数。此函数从纪元返回持续时间。
跟随的例子是毫秒分辨率的分数。
#include <iostream>
#include <chrono>
#include <ctime>
using namespace std::chrono;
int main()
{
high_resolution_clock::time_point p = high_resolution_clock::now();
milliseconds ms = duration_cast<milliseconds>(p.time_since_epoch());
seconds s = duration_cast<seconds>(ms);
std::time_t t = s.count();
std::size_t fractional_seconds = ms.count() % 1000;
std::cout << std::ctime(&t) << std::endl;
std::cout << fractional_seconds << std::endl;
}
示例结果:
Thu Oct 11 19:10:24 2012
925
关于c++ - 如何将std::chrono::time_point转换为带有小数秒的日历日期时间字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12835577/