Using Howard Hinnant 的免费、开源、仅限标头的日期时间库,您可以获得当前 UTC 时间std::string
在一行代码中:
std::string s = date::format("%F %T", std::chrono::system_clock::now());
我刚刚运行了这个,字符串包含:
2017-03-30 17:05:13.400455
没错,它甚至可以为您提供完整的精度。如果您不喜欢这种格式,则所有strftime
格式化标志可用。如果您想要当地时间,可以时区库也可用,尽管它不仅仅是标题。
std::string s = date::format("%F %T %Z", date::make_zoned(date::current_zone(),
std::chrono::system_clock::now()));
Output:
2017-03-30 13:05:13.400455 EDT
C++20 更新
现在可以使用 std::lib 标头来完成此操作<chrono>
and <format>
:
#include <chrono>
#include <format>
#include <string>
int
main()
{
std::string s1 = std::format("{:%F %T}", std::chrono::system_clock::now());
std::string s2 = std::format("{:%F %T %Z}",
std::chrono::zoned_time{std::chrono::current_zone(),
std::chrono::system_clock::now()});
}
Demo.