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

Create a string from c++11 time_t that is convertable to .net DateTime

本文关键字:可转换 一个 net DateTime 字符串 time c++11 创建      更新时间:2023-10-16

这是此问题的后续问题:将std::time_t转换为System::DateTime的符合标准的方式?

我需要用一个字符串将一个c++11time_t转换为.NETDateTime。程序需要获取当前time_t的值,创建一个将要写入文件的字符串,然后用C#编写的另一个程序将读取该值并将其转换为DateTime

问题是我没有访问C#代码的权限,所以我需要在C++端生成所需的字符串。目前,C#方面知道如何转换以下格式的字符串:

2018-05-13T10:03:18.4195735+03:00

我不确定这是否是一个表示DateTime的常规字符串,以及如何创建它

编辑:除了time_t值,我还得到了毫秒值作为chrono::seconds::rep,所以你可以假设我得到了两个

这是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(1纳秒(似乎只能获得1/100000秒,这将是小数点后6位。他们真的需要这么精确吗?如果没有,你可以在小数点后第7位加一个0。