这是该问题的后续问题: Standard conformant way of converting std::time_t to System::DateTime?
我需要通过字符串将c ++ 11 time_t
转换为.NET DateTime
。该程序需要获取当前time_t
的值,创建一个要写入文件的字符串,然后另一个用C#编写的程序将读取该值并将其转换为{{ 1}}。
问题是我无权访问C#代码,因此我需要在c ++端制作所需的字符串。当前,C#端知道如何转换这种格式的字符串:
DateTime
我不确定这是否是表示2018-05-13T10:03:18.4195735+03:00
的常规字符串,以及如何精确地创建它。
编辑:除了DateTime
值,我还得到了一个time_t
的毫秒值,因此您可以假设我同时获得了
答案 0 :(得分:2)
这是ISO 8601格式,代表日期和时间的国际标准。
在您的情况下,您有<date>T<time><zone>
<date> = 2018-05-13 (YYYY-MM-DD)
<time> = 10:03:18.4195735 (hh:mm:ss.sssssss)
<zone> = +03:00
您可以在此处查看有关此约定的更多信息:ISO 8601
可能他们正在使用某些内容将其解析为DateTime
。
我对C ++不太了解,但是看起来您可以使用GetTimeZoneInformation
来获取时区(仅Windows)。我认为您已经有了时间和日期,尽管他们要求的精度要超过毫秒。看起来在C ++中,chrono
(一个nanosecond)只能得到1/1000000秒,这将是6个小数位。他们真的需要这么精确吗?如果没有,您可以在小数点后第七位加0。