如何在C ++ 11中打印当前时间?

时间:2013-07-23 17:24:44

标签: c++ c++11 locale chrono

C ++ 11中是否有一种简单的方法可以使用与正在使用的ostream相关联的语言环境的相应格式规则来打印当前的挂壁时间?

我真正想做的是这样的事情:

myStream << std::chrono::system_clock::now();

并根据与myStream关联的任何区域设置打印日期和时间。 C ++ 11提供put_time,但它需要格式化字符串,我希望格式由与流关联的语言环境确定。还有time_puttime_put_byname,但根据cppreference.com上的示例,这些函数与put_time一起使用。

没有简单的方法可以在不手动格式化的情况下打印时间点值吗?

1 个答案:

答案 0 :(得分:21)

您可以将put_time"%c"等格式字符串一起使用。 %c是区域设置的标准日期和时间字符串的格式说明符。结果在我的机器上看起来像“Tue Jul 23 19:32:18 CEST 2013”​​(POSIX en_US locale,在德国时区)。

auto now = std::chrono::system_clock::now();
auto now_c = std::chrono::system_clock::to_time_t(now);
std::cout << std::put_time(std::localtime(&now_c), "%c") << '\n';