我想将时间戳转换为格式化时间。 时间戳是参考日期从1.1.1900 00:00开始的双精度值(例如timestamp = 41274.043),并且应返回类似02.01.2017 01:01的值。
我找不到有关如何正确设置参考时间的任何信息。有什么建议吗? 要自定义日期,我将使用strftime(),必须使用STL ...
BR
jtotheakob
答案 0 :(得分:0)
使用Howard Hinnant's free, open source, header-only library可以这样做:
#include "date/date.h"
#include <iostream>
std::chrono::system_clock::time_point
to_chrono_time_point(double d)
{
using namespace std::chrono;
using namespace date;
using ddays = duration<double, days::period>;
return sys_days{January/1/1900} + round<system_clock::duration>(ddays{d});
}
int
main()
{
std::cout << date::format("%d.%m.%Y %H:%M\n", to_chrono_time_point(41274.043));
}
这只是将double
转换为chrono::duration
,并用double
表示,周期为days
,然后将duration
舍入为{{ 1}},最后将持续时间添加到1.1.1900 00:00。结果是system_clock::duration
。
可以使用std::chrono::system_clock::time_point
从所示的同一库中格式化std::chrono::system_clock::time_point
。该程序的输出为:
date::format