我一直在升级一些旧代码,并在可能的情况下尝试更新到 c++11。以下代码是我用来在程序中显示时间和日期的方式
#include <iostream>
#include <string>
#include <stdio.h>
#include <time.h>
const std::string return_current_time_and_date() const
{
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%Y-%m-%d %X", &tstruct);
return buf;
}
我想使用 std::chrono(或类似的)以类似的格式输出当前时间和日期,但我不确定如何去做。任何帮助将不胜感激。谢谢
原文由 const_ref 发布,翻译遵循 CC BY-SA 4.0 许可协议
<chrono>
库只处理时间而不是日期,除了system_clock
它能够将其时间点转换为time_t
。所以使用<chrono>
作为日期不会有太大的改善。希望我们在不久的将来能得到类似chrono::date
的东西。也就是说,您可以通过以下方式使用
<chrono>
:请注意,
std::localtime
可能会导致数据争用。localtime_r
或类似功能可能在您的平台上可用。更新:
使用新版本的 Howard Hinnant 的 日期库,您可以编写:
这将打印出类似“2015-07-24 05:15:34.043473124 UTC”的内容。
在不相关的注释中,返回
const
对象已成为 C++11 不可取的; const 返回值不能被移出。我还删除了尾随 const,因为尾随 const 仅对成员函数有效,并且此函数不需要成为成员。