c++ - C++中基于时区的时间

标签 c++ c time

gmtime()localtime() 有什么区别? 我的要求: 我需要根据我所在的时区显示时间。 我有一个 POSIX(UTC) 格式的时间,以秒为单位。我有几秒钟的时区偏移量(在 UTC 和我当前位置之间)。 我添加或减去时区偏移量。 在此之后我仍然有 POSIX 格式的时间。 为了将它转换为人类时间,我应该使用 gmtime() 还是 localtime()。这是因为我也需要日期。 请澄清。 谢谢!

最佳答案

您不应自己提供时区偏移量,而应通过环境提供实时时区规范。然后,localtime 将为您提供本地化时间。 (gmtime 始终为您提供 UTC。)假设您的代码如下所示

struct tm time_buffer, *localtime;
localtime = localtime_r(timep, &time_buffer);
printf("The hour is %i\n", localtime->tm_hour);

,然后你通过以下方式调用你的程序:

$ TZ=Europe/Berlin my-program

并获取柏林的本地时间,正确调整为夏令时。

如果您确实需要自己提供时区,请阅读 man tzset

关于c++ - C++中基于时区的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266769/

相关文章:

c - 调试多线程应用程序中的信号处理

r - 在 R 中处理时间戳

python - time.strftime 的时区问题

java - 尝试计算时间差来比较两种排序算法

c++ - 在 Windows 上构建 LLVM 时出错 - LNK1104

c++ - "cannot access private member' "只有当类有导出链接时才会出错

C:忽略特定字符,同时使用 fscanf

C++ 模板 sfinae 错误

c++ - getline() 如何在指针方面工作?

c - 在什么阶段抛出错误?