c++ boost::chrono::system_clock -如何将当前时间格式化为字符串?

qvk1mo1f  于 2023-05-30  发布在  其他
关注(0)|答案(2)|浏览(145)

我读了关于boost::chrono的全部信息,但仍然不知道如何简单地将boost::chrono::system_clock转换为字符串。例如,我想获取当前时间并将其转换为下一种格式的字符串:hh:mm:ss。例如我想接收这样的smth- 24:55:03。我可以通过以下方式接收当前时间:

auto current_time = boost::chrono::system_clock::now()

如何简单地将current_time格式化为字符串。它伤心,但我不能找到任何帮助,在促进文档和谷歌。

gdx19jrr

gdx19jrr1#

所以boost::chrono应该在C++11的std::chrono中得到完全支持。
我相信现在Visual Studio 2013和gcc 4.8完全支持它?
无论如何,您可以使用以下命令打印:put_time
链接中有大量的格式说明符,您可以使用它们来根据自己的需要定制输出。
需要注意的是,put_time只是一个流操纵器。如果您需要在string中获得时间,则需要将put_timestringstream一起使用。

cbjzeqam

cbjzeqam2#

在本例中,我将使用标准库中的std::localtimestd::put_time将使用boost.chrono获得的日期打印到std::cout
您可以根据需要更改格式

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

int main() {
    auto now{boost::chrono::system_clock::to_time_t(boost::chrono::system_clock::now())};
    std::tm* ptm{std::localtime(&now)};
    std::cout << std::put_time(ptm, "%Y/%m/%d %H:%M:%S") << std::endl;
    return 0;
}

编译器命令:

g++ x1.cpp -lboost_chrono

样本输出:

2023/05/24 14:30:05

相关问题