在Windows上可正确运行, Linux上未测试
#include <chrono>
void gettime()
{
auto now = std::chrono::time_point_cast<std::chrono::milliseconds>(std::chrono::system_clock::now());
auto millisec = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch());
auto milli = millisec % 1000; // 秒后3位
__int64 now_milisecond = millisec.count() / 1000; // 变成秒
struct tm newtime;
//__int64 ltime;
//_time64(<ime);
now_milisecond += (__int64)8 * 60 * 60; //此处转化为东八区北京时间,如果是其它时区需要按需求修改
_gmtime64_s(&newtime, &now_milisecond);
printf("%4d年%02d月%02d日 %02d:%02d:%02d.%03d\n", newtime.tm_year + 1900, newtime.tm_mon + 1, newtime.tm_mday, newtime.tm_hour, newtime.tm_min, newtime.tm_sec, milli);
}
参考:https://learn.microsoft.com/zh-cn/previous-versions/3stkd9be(v=vs.110)
https://blog.youkuaiyun.com/freeabc/article/details/111669600