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

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

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

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

4 ответов


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

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

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

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

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


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

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

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

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


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

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

цитата:

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

и:

времени.time ()¶

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

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


Micropython это эпоха 1/1/2000 см. time() и utime.