Python中的纪元开始时间是否独立于平台(即始终是1970年1月1日)?
或者它是否依赖于平台?
我想在运行Python的各种机器上序列化日期时间(具有第二精度),并且能够在不同平台上读取它们,可能还使用不同的编程语言(比Python)。将序列时间序列化是一个好主意吗?
答案 0 :(得分:11)
要了解时代的内容,请查看
gmtime(0)
。
我认为这意味着没有特定的时代得到保证。
另见this Python-Dev thread。这似乎证实了这样一种观念,即在实践中,时代总是被认为是1970/01/01,但这并没有明确保证语言。
这样做的结果是,至少对于Python来说,除非你处理奇怪而晦涩的平台,否则你可能会使用纪元时间。对于使用非Python工具阅读,您可能也没问题,但要确保您需要阅读这些工具提供的文档。
答案 1 :(得分:3)
纪元时间(unix时间)是一个标准术语:
http://en.wikipedia.org/wiki/Unix_time
Unix时间或POSIX时间是用于描述实例的系统 time,定义为自之后经过的秒数 午夜世界协调时间(UTC),1970年1月1日,[注1]不是 计算闰秒。[注2]它在类Unix和许多中被广泛使用 其他操作系统和文件格式。它既不是线性的 表示时间,也不是UTC的真实表示。[注3] Unix 可以在某些Unix系统上通过键入日期+%s来检查时间 命令行
这意味着如果您通过Python使用纪元时间,它将在不同平台上保持一致。一致性的最佳选择是在所有情况下都使用UTC。
答案 2 :(得分:1)
time()
总是会从时代返回时间,请查看documentation。
请注意,Epoch始终是自1970年以来的秒数,但由于不同机器上的时钟不一样 - 您可能会遇到一些问题。
引用:
时代是时间开始的时刻。 1月1日 年,在0小时,“自纪元以来的时间”为零。对于Unix, 时代是1970年。要了解时代是什么,请看gmtime(0)。
和
了time.time()¶
返回自纪元以来作为浮动的秒数 点数。请注意,即使时间始终返回为 浮点数,并非所有系统都提供更好的时间 精度超过1秒。虽然此功能通常会返回 非递减值,它可以返回比以前更低的值 如果在两次通话之间设置了系统时钟,则呼叫。
(两者都来自Python文档)。
答案 3 :(得分:1)
Micropython's时代是2000年1月1日,请参阅time()和utime。
答案 4 :(得分:0)
在Python pandas.to_datetime()中,虽然默认值为unix epoch origin,但您可以通过提供自定义参考时间戳来更改它。
例如
pd.to_datetime(18081) #default unix epoch
Out: Timestamp('1970-01-01 00:00:00.000018081') #default is in nanosecond
pd.to_datetime(18081, unit='D')
Out: Timestamp('2019-07-04 00:00:00') #change unit of measure
您可以将其更改为任何参考日期。确保单位合理。在下面的示例中,我们将原点设置为1960年1月1日。请注意,这是默认的SAS日期开始日期。
pd.to_datetime(18081, unit='D', origin='1960-1-1') #change to your reference start date
Out: Timestamp('2009-07-03 00:00:00')