В Python, время, возвращаемое временем(), всегда измеряется с 1 января 1970 года?

Является ли время начала эпохи в Python независимым от платформы (т.е. всегда 1/1/1970)?

Или это зависит от платформы?

Я хочу сериализовать datetime (со второй точностью) на разных машинах, работающих на Python, и иметь возможность читать их на разных платформах, возможно, также используя разные языки программирования (чем Python). Является ли сериализация эпохи хорошей идеей?

Ответ 1

В документации говорится:

Чтобы узнать, что такое эпоха, посмотрите gmtime(0).

Я бы интерпретировал это как означающее, что никакая конкретная эпоха не гарантируется.

См. также этот поток Python-Dev. Это, похоже, подтверждает мнение о том, что на практике эпоха всегда считается 1970/01/01, но это явно не гарантируется языком.

В результате это, по крайней мере, для Python, вы, вероятно, хорошо используете эпоху, если не имеете дело со странными и неясными платформами. Для чтения с помощью инструментов, отличных от Python, вы, вероятно, тоже в порядке, но чтобы быть уверенным, что вам нужно будет прочитать документацию, предоставляемую этими инструментами.

Ответ 2

Время Epoch (время unix) - стандартный термин:

http://en.wikipedia.org/wiki/Unix_time

Время Unix или время POSIX - это система для описания экземпляров в время, определенное как количество секунд, прошедших с полуночное скоординированное всеобщее время (UTC), 1 января 1970 года, [примечание 1] нет считая секунды прыжка. [примечание 2] Он широко используется в Unix-подобных и многих других операционных систем и форматов файлов. Он не является ни линейным представление времени или истинное представление UTC. [примечание 3] Unix время может быть проверено на некоторых Unix-системах, набрав дату +% ​​s на командной строки

Это означает, что если вы используете эпоху через Python, это будет согласовано между платформами. Ваш лучший выбор для согласованности - использовать UTC во всех случаях.

Ответ 3

time() всегда будет возвращать время с эпохи, посмотрите документацию.

Обратите внимание, что Epoch всегда количество секунд с 1970 года, но поскольку часы на разных машинах не совпадают, вы можете столкнуться с некоторыми проблемами.

Образец цитирования:

Эпоха - это точка, в которой начинается время. 1 января этого год, в 0 часов, "время с эпохи" равно нулю. Для Unix эпоха - 1970 год. Чтобы узнать, что такое эпоха, посмотрите на gmtime (0).

и

time.time() ¶

Возвращает время в секундах, начиная с эпохи как плавающее номер точки. Обратите внимание, что хотя время всегда возвращается как число с плавающей запятой, не все системы обеспечивают время лучше чем 1 секунда. Хотя эта функция обычно возвращает неубывающие значения, он может вернуть более низкое значение, чем предыдущий вызовите, если системные часы были установлены между двумя вызовами.

(оба из документации Python).