21xrx.com
2024-12-22 17:19:35 Sunday
登录
文章检索 我的文章 写文章
Linux C++:获取当前时间
2023-07-06 08:36:44 深夜i     --     --
Linux C++ 获取 当前时间

在 Linux C++ 编程中,获取当前时间是一项常见的任务。当前时间可能被用于各种用途,如日志记录、时间戳、计时器等等。在 Linux C++ 中,获取当前时间的方法有很多种,本文将介绍其中两种:使用 time_t 类型和使用 std::chrono::system_clock。

time_t 类型获取当前时间

time_t 是一种用来表示相对时间的类型。具体来说,它表示的是当前时间与 Epoch (1970 年 1 月 1 日 00:00:00 UTC)之间的秒数差。因此,如果要获取当前的时间,只需要调用 time() 函数即可:


time_t now = time(nullptr);

这行代码将返回当前时间的 time_t 对象,我们可以通过各种方式对其进行格式化,例如使用 strftime() 函数将其转化为字符串:


char str[100];

strftime(str, sizeof(str), "%Y-%m-%d %H:%M:%S", localtime(&now));

cout << str << endl;

这行代码将输出当前时间的格式化字符串,例如 "2021-10-12 19:23:45"。

std::chrono::system_clock 获取当前时间

std::chrono::system_clock 是 C++11 引入的用于处理时间的标准库。它提供了更为精细的时间表示,并且支持跨平台。要获取当前时间,我们可以使用系统时钟的 now() 函数:


auto now = std::chrono::system_clock::now();

这行代码将返回当前时间的 std::chrono::time_point 对象,我们可以通过 std::chrono::duration 对象将其转化为秒数、毫秒数等等格式:


auto now_sec = std::chrono::time_point_cast<std::chrono::seconds>(now);

auto now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);

auto sec_since_epoch = now_sec.time_since_epoch().count();

auto ms_since_epoch = now_ms.time_since_epoch().count();

cout << "Seconds since epoch: " << sec_since_epoch << endl;

cout << "Milliseconds since epoch: " << ms_since_epoch << endl;

这行代码将输出当前时间距离 Epoch 的秒数和毫秒数。

总结

Linux C++ 中获取当前时间有多种方法,其中 time_t 类型和 std::chrono::system_clock 是最常见的两种。使用 time_t 类型可以很方便地进行格式化输出,而使用 std::chrono::system_clock 则更为精细,支持更多的时间单位。根据需要进行选择即可。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复