C++ 使用分数和时区生成完整的iso日期时间表示字符串

C++ 使用分数和时区生成完整的iso日期时间表示字符串,c++,datetime,boost,iso8601,C++,Datetime,Boost,Iso8601,我想打印符合ISO 8601的字符串,格式为 如ISO中所示,完成日期时间表示 4.3.2完整陈述 1985-04-12T10:15:30Z与 4.2.2.4小数表示法 同于23:20:50,5 按允许的方式合并 4.3.3不完整的陈述 以19850412T101530,42+04或1985-04-12T10:15:30.32Z的形式 使用当前(挂钟)的boost date time,但我甚至不知道如何使用boost文档打印当前时间的简单日期时间字符串。您说您想打印“当前(挂钟)”,但您的示例显

我想打印符合ISO 8601的字符串,格式为 如ISO中所示,完成日期时间表示

4.3.2完整陈述

1985-04-12T10:15:30Z与

4.2.2.4小数表示法

同于23:20:50,5

按允许的方式合并

4.3.3不完整的陈述

19850412T101530,42+041985-04-12T10:15:30.32Z的形式

使用当前(挂钟)的boost date time,但我甚至不知道如何使用boost文档打印当前时间的简单日期时间字符串。

您说您想打印“当前(挂钟)”,但您的示例显示“1985”

以下内容将以ISO格式打印当前时间:

#include <iostream>
#include <boost/date_time.hpp>

int main()
{
    auto now = boost::posix_time::microsec_clock::universal_time();

    std::cout << to_iso_extended_string(now) << std::endl;
}
注意:ISO时间始终在UTC时区中,因此您只需在其上附加“Z”(Zulu)后缀即可


有关更多详细信息,请参阅。

1985在ISO:/)中的示例中使用。但是,您的答案几乎正确,但错误/不完整,因为它遗漏了时区指示符,如果省略,则表示本地时间,而不是UTC。(因此您的代码字符串明显错误)(如果根据4.2.2.2至4.2.2.4使用本地时间,则区域指示符为空,即UTC指示符[Z]如果根据4.2.4使用了当天的UTC,并且如果根据4.2.5.2使用了当地时间和UTC的差异,则为差异部分。)不要射击信使-这就是指定Boost Posix时间的方式<代码>转换为iso扩展字符串“转换为格式YYYY-MM-DDTHH:MM:SS,fffffffff”。因为您知道您正在使用UTC时间,所以您只需要自己将UTC指示符附加到它。或者更好的方法是使用该库,这将简化以后到C++20的迁移。
2019-04-26T07:52:34.533296