C ++ 11中是否有一种简单的方法可以使用与正在使用的ostream相关联的语言环境的相应格式规则来打印当前的挂壁时间?
我真正想做的是这样的事情:
myStream << std::chrono::system_clock::now();
并根据与myStream
关联的任何区域设置打印日期和时间。 C ++ 11提供put_time
,但它需要格式化字符串,我希望格式由与流关联的语言环境确定。还有time_put
和time_put_byname
,但根据cppreference.com上的示例,这些函数与put_time
一起使用。
没有简单的方法可以在不手动格式化的情况下打印时间点值吗?
答案 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';