【问题标题】:Confused about UTC对UTC感到困惑
【发布时间】:2019-08-04 16:34:16
【问题描述】:

我对@9​​87654321@ 功能不是很清楚。 “man 2 time”表示“time() 将时间返回为自 Epoch 1970-01-01 00:00:00 +0000 (UTC) 以来的秒数。”

我的问题是

  • 假设设备 A 在伦敦,设备 B 在美国。 time() 是否返回相同的值?或者time() 结果是否随时区变化?

====更新====

我知道我真正的问题。我认为UTC是一个时区。由于维基百科说“在一些说英语的国家,格林威治标准时间 (GMT) 一词经常被用作 UTC 的同义词”,所以我在想,美国的 time() 应该返回 (A+B)。 A 是当前美国到美国的“1970-01-01 00:00:00 +0000”。 B 是 (1970-01-01 00:00:00 +0000 USA to1970-01-01 00:00:00 +0000 GMT ) 的时差。看来我完全错了。

【问题讨论】:

  • 您是否了解过 UTC 是什么?
  • 是的,它是标准的“协调世界时”
  • UTC 是一个通用时区,与 GMT(格林威治标准时间)基本相同。时间总是有一个关联的时区,在这种情况下,文档说它是 UTC(而不是本地时间)。很清楚。
  • time() 始终返回 UTC 时间,因此无论您的时区如何,它都是相同的。
  • @ChristianGibbons 我知道我真正的问题。我认为UTC是一个时区。因为维基百科说“在一些说英语的国家,格林威治标准时间(GMT)这个词经常被用作UTC的同义词”然后我在想,美国的时间()应该返回(甲+乙)。 A 是当前美国到美国的“1970-01-01 00:00:00 +0000”。 B 是 (1970-01-01 00:00:00 +0000 USA to1970-01-01 00:00:00 +0000 GMT ) 的时差。看来我完全错了

标签: c time


【解决方案1】:

自 1970 年 UTC 开始以来的秒数不会因您在世界上的位置而异,因此无论您在世界上的哪个位置,time 都会返回相同的值(假设系统时钟正确)。

本地时间的转换由后续操作进行。

$ TZ=America/Toronto perl -MPOSIX -le'
   my $time = time();
   print $time;
   print strftime("%FT%TZ", gmtime($time));
   print strftime("%FT%T%z", localtime($time)) =~ s/(?=..\z)/:/sr;
'
1552516168
2019-03-13T22:29:28Z
2019-03-13T18:29:28-04:00

$ TZ=America/Halifax perl -MPOSIX -le'
   my $time = time();
   print $time;
   print strftime("%FT%TZ", gmtime($time));
   print strftime("%FT%T%z", localtime($time)) =~ s/(?=..\z)/:/sr;
'
1552516168
2019-03-13T22:29:28Z
2019-03-13T19:29:28-03:00

[糟糕,我以为这个问题被标记为。但是,代码应该足够清晰,以便将这个想法传达给 C 程序员。 timegmtimelocaltimestrftime 在两种语言中的行为相似。]

【讨论】:

  • 详细信息:15525161682019-03-13T22:**:**Z 之间的大多数转换假装闰秒 不存在,因此自1970-01-01 00:00:00Z 以来,1552516168 并不是秒数。
  • 正确。 time() 实际上返回自 1970 UTC 开始以来非闰秒的秒数。
  • 很好的说法是“自 1970 年 UTC 开始以来不是闰秒”。
【解决方案2】:

假设您的系统时间设置正确,那么机器所在的时区对于 time() 返回的内容没有影响,因为——正如你已经承认的——UTC 的定义是通用的,并且不会因地而异.

【讨论】:

  • 所以在美国加利福尼亚,我可以说 time() 返回自“1970-01-01 00:00:00 +0000 当地标准”以来的秒数
  • @nathan “+0000”部分表示 UTC。 “当地标准”没有任何意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 2012-07-22
  • 2013-05-13
  • 2020-04-16
  • 2023-03-08
  • 2019-12-30
  • 2022-01-20
相关资源
最近更新 更多