C++11 以字符串形式获取当前日期和时间

2023-11-26

在 C++11 中以字符串形式获取日期和时间的最先进方法是什么?

我知道关于std::put_time,但参考文献说我只能在流中使用它。

std::chrono::system_clock它提供了to_time_t返回时间为time_t而且缺少日期,不是吗?

我可以使用像 bames53 这样的字符串流:使用 std::chrono 在 C++ 中输出日期和时间但这似乎是一个解决方法。


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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++11 以字符串形式获取当前日期和时间 的相关文章

随机推荐