Подтвердить что ты не робот

Является ли Python time.time() конкретным часовым поясом?

Извинения за задание слишком простого вопроса, но я не смог очистить его после чтения документов. Кажется, что мне не хватает или неправильно поняли что-то слишком основное здесь.

Позволяет ли вызов time.time() из разных часовых поясов, в то же время производить разные результаты? Возможно, это связано с определением epoch, которое на документах (и на моем не очень глубоком поиске в Интернете) не имеет упоминаний о часовом поясе.

Кроме того, предположим, что time.time() вызывается из мест с разными часовыми поясами и преобразуется в UTC datetime на своих машинах, все они будут давать одинаковое время UTC?

4b9b3361

Ответ 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

Итак, ответ: это зависит.