Kno*_*abe 23 c++ locale c++11 c++-chrono
在C++ 11中是否有一种简单的方法可以使用与正在使用的ostream相关联的语言环境的相应格式规则来打印当前的挂起时间?
我真正想做的是这样的事情:
myStream << std::chrono::system_clock::now();
Run Code Online (Sandbox Code Playgroud)
并根据与之相关的任何区域设置打印日期和时间myStream.C++ 11提供put_time,但它需要格式化字符串,我希望格式由与流关联的语言环境确定.还有time_put和time_put_byname,但基于在cppreference.com的例子中,这些功能配合使用put_time.
有没有简单的方法来打印时间点值而不手动格式化它?
R. *_*des 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';
Run Code Online (Sandbox Code Playgroud)