【问题标题】:Get current time in C++\{C}在 C++\{C} 中获取当前时间
【发布时间】:2020-06-08 09:33:47
【问题描述】:

如何在没有 C 库的情况下使用 C++ 获取当前时间?

C 有<ctime>。我无缘无故地尝试避免使用 C 库。

【问题讨论】:

  • 你可以查看chrono库
  • std::chrono::system_clock::now 返回代表当前时间点的时间点。
  • 您最初的问题是“在没有 C 库的情况下,如何在 C++ 中获取当前时间?” std::chrono::system_clock::now 返回当前时间点。如何打印它,是一个不同的问题。
  • 不要编辑问题以大幅改变问题并使现有答案无效。如果您还有其他问题,可以在新帖子中提出。
  • 另外打印当前时间是否有很大不同?我会认为这是一个小补充。

标签: c++ time


【解决方案1】:

您可以使用 chrono 库中的 std::chrono::system_clock::now()。它返回一个代表当前时间点的时间点。

【讨论】:

  • 示例显示如何打印时差,而不是当前时间。
  • 对不起,现在看。您介意将其纳入您的答案吗?
  • 是的,我知道。我仍然要求编辑,以帮助未来的读者(例如我以后)。
  • @tensor 如您所见,您的问题已经回滚。您可以提出一个新问题。
【解决方案2】:

system_clock::now() 返回一个代表当前时间的time_point 对象。

时间点对象可以用system_clock::to_time_t()转换成time_t,可以进一步打印和操作。

#include <iostream>
#include <chrono>

int main() {
    std::chrono::time_point t = std::chrono::system_clock::now();
    time_t t_time_t = std::chrono::system_clock::to_time_t(t);
    std::cout << t_time_t << '\n';
}

这里time_t 是从&lt;chrono&gt; 导入的,即使它是C 类型。

【讨论】:

  • 但是time_t是来自ctime/time.h的C结构体
  • @ThomasSablik 确实,但不是直接导入的。如果不使用time_t,我无法找到解决方案,至少部分是这样。
  • 如果将#include &lt;time.h&gt; 替换为#include &lt;chrono&gt;,则可以使用Saurav Kukkar 的解决方案;-) 在C++20 之前,没有没有C 库函数的解决方案。
【解决方案3】:

您可以使用time.h 以秒为单位获取时间,如下所示,

include <time.h>

time_t timeSec;
time(&timeSec);

println("Current time in seconds : \t%lld\n", (long long)timeSec);

【讨论】:

  • time.h,即ctime是一个C库函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 2012-05-09
  • 2011-10-18
  • 2020-01-09
  • 1970-01-01
相关资源
最近更新 更多