从c ++ 11 time_t创建一个可转换为.net DateTime的字符串

时间:2018-07-16 07:12:48

标签: c# c++ c++11 datetime

这是该问题的后续问题: 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的毫秒值,因此您可以假设我同时获得了

1 个答案:

答案 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。