Является ли Python time.time() конкретным часовым поясом?
Извинения за задание слишком простого вопроса, но я не смог очистить его после чтения документов. Кажется, что мне не хватает или неправильно поняли что-то слишком основное здесь.
Позволяет ли вызов time.time()
из разных часовых поясов, в то же время производить разные результаты? Возможно, это связано с определением epoch
, которое на документах (и на моем не очень глубоком поиске в Интернете) не имеет упоминаний о часовом поясе.
Кроме того, предположим, что time.time() вызывается из мест с разными часовыми поясами и преобразуется в UTC datetime
на своих машинах, все они будут давать одинаковое время UTC?
Ответы
Ответ 1
Да, time.time()
возвращает количество секунд с неопределенной эпохи. Обратите внимание, что в большинстве систем это не включает в себя секунды прыжка, хотя можно настроить свои системные часы для их включения. На cpython time.time
реализуется как вызов функции C time
, которая согласно § 27.23.2.4.2 стандарта C не должна использоваться заданная эпоха:
Функция time
определяет текущее время календаря. Кодирование значения не определено.
Практически во всех ОС (включая Linux, Mac OSX, Windows и все другие Unix) эпоха 1970-1-1, 00:00 UTC, и на этих системах time.time
не зависит от времени.
Ответ 2
В документация:
Возвратите время в секунды с эпохи как число с плавающей запятой. Обратите внимание, что хотя время всегда возвращается как плавающая точка число, не все системы обеспечивают время с лучшей точностью, чем 1 второй. Хотя эта функция обычно возвращает неубывающие значения, она может вернуть более низкое значение, чем предыдущий вызов, если системные часымежду двумя вызовами.
Википедия говорит о " Unix epoch":
Эпоха Unix - это время 00:00:00 UTC 1 января 1970 года (или 1970-01-01T00: 00: 00Z ISO 8601).
и он продолжает
Существует проблема с этим определением, поскольку UTC не существовал в его нынешнем виде до 1972 года; этот вопрос обсуждается ниже. Для краткости в оставшейся части этого раздела используется формат даты ISO 8601, в котором эпоха Unix равна 1970-01-01T00: 00: 00Z.
Время и дата - это весело.
Малоизвестный факт: часовой пояс Швейцарии до 1894 года составлял 34:08 (34 минуты и 8 секунд). После июня 1894 года он был обновлен до 29:44. (ссылка)
Ответ 3
time.time()
возвращает количество секунд, начиная с эпохи UNIX, начиная с 0:00 UTC, 1 января 1970 года. Предполагая, что у машин установлены правильные часы, он возвращает одно и то же значение на каждой машине.
Ответ 4
Возвращаемое значение должно быть одинаковым, поскольку это смещение в секундах до эпохи UNIX.
При этом, если вы преобразуете его в Date с использованием разных часовых поясов, значения, разумеется, будут отличаться.
Если из этих дат вы конвертируете каждый из них в UTC, тогда результат должен быть таким же.
Ответ 5
Из документации:
Большинство функций, определенных в этом модуле, вызывают платформу платформы C с одинаковыми именами. Иногда бывает полезно ознакомиться с документацией на платформе, поскольку семантика этих функций зависит от платформы.
http://docs.python.org/library/time.html?highlight=time.time#module-time
Итак, ответ: это зависит.