Смущенный о UTC - PullRequest
       5

Смущенный о UTC

0 голосов
/ 14 марта 2019

Мне не очень понятно о функции time().«man 2 time» говорит: «time () возвращает время как количество секунд с начала эпохи, 1970-01-01 00:00:00 +0000 (UTC)».

Мой вопрос

  • Предположим, устройство A находится в Лондоне, устройство B находится в США.time() возвращает то же значение или нет?Или результат time() меняется в зависимости от часового пояса?

==== update ====

Я знаю свою настоящую проблему.Я думал, что UTC - это часовой пояс.Поскольку в Википедии сказано: «В некоторых странах, где говорят по-английски, термин« среднее время по Гринвичу »(GMT) часто используется как синоним UTC», я подумал, что time() в США должно вернуться (A + B).А является текущим США до "1970-01-01 00:00:00 +0000" в СШАB - разница во времени (1970-01-01 00:00:00 +0000 США до 1970-01-01 00:00:00 +0000 GMT).Кажется, я совершенно не прав.

Ответы [ 2 ]

4 голосов
/ 14 марта 2019

Количество секунд с начала 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

[ Ой, я думал, что этот вопрос был помечен .Тем не менее, код должен быть достаточно понятным, чтобы передать идею программисту на Си.time, gmtime, localtime и strftime ведут себя одинаково на обоих языках. ]

0 голосов
/ 14 марта 2019

Если ваше системное время установлено правильно, часовой пояс, в котором находится машина, не имеет разницы относительно того, что возвращает time(), поскольку - как вы уже подтвердили - UTC по определению универсален и не меняется от местоположения к местоположению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...