c - 为什么在转换为 tm 结构并返回时两个 time_t 值之间存在一小时的差异?

标签 c linux utc mktime

当我执行以下代码时:

#include <time.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
  time_t rawtime = 0;
  time_t secs;
  struct tm* timeinfo = gmtime(&rawtime);

  printf("rawtime : %s\n", asctime(timeinfo));

  secs = mktime(timeinfo);

  printf("converted time : %s\n", asctime(gmtime(&secs)));

  return 0;
}

输出是:

rawtime : Thu Jan  1 00:00:00 1970
converted time : Wed Dec 31 23:00:00 1969

为什么相差一小时?

顺便说一句,我正在运行 Ubuntu 14.10 64 位。

最佳答案

因为 mktime 将本地时间而不是系统时间(gmtime)转换为时间戳。

关于c - 为什么在转换为 tm 结构并返回时两个 time_t 值之间存在一小时的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34592501/

相关文章:

c - 如何在 Mac 上使用 C 管道?

c - 增加字符串值的数字末尾

c - 为什么我的c程序突然用了30g的虚拟内存?

linux - VM 内核升级后无法插入模块

ruby-on-rails - 按 utc 日期的 rails 组

python - 将 UTC 时间转换为 python 日期时间

c - 为什么 strlen() 在这些命令行参数以 null 结尾时没有给出正确的长度?

regex - 使用正则表达式 Grep 比特币地址

python - 如何在浏览器中显示 linux 日志文件中的行

linux - 如果文件不存在则退出脚本