TLDR
使用fromtimestamp 引用in the documentation
返回与 POSIX 时间戳对应的本地日期 [...如果提供了 tz...] 时间戳将转换为 [提供] tz 的时区。
给定一个 UNIX/EPOCH 时间戳
这是一个由 python 生成的时间戳示例(感谢@jfs 和Paul Ganssle 更新)
from datetime import datetime, timezone
epoch = datetime.now(tz=timezone.utc).timestamp() # example: 1520020585.536527
注意:并非所有纪元都相同,使用 time.time() 会显示自 platform dependent epoch 以来经过的秒数,而 date.timestamp() 会为您提供 what its claims is a POSIX timestamp,请参阅下面的注意事项 em>
注意:我特别避免将 .timestamp() 的输出称为“符合 POSIX”的时间戳。如果您的应用程序depends on that level of accuracy,那么您可能想要使用.timestamp()以外的其他东西
注意:使用datetime.now give a higher precision
注意:我们可以省略上面的 tz 参数,但使用时区感知日期是一个好习惯,因为 python 3 在使用幼稚日期时可能会做出错误的假设(或不要在我们认为会出错的地方抛出错误)
将时间戳转换为日期时间对象
给定时间戳(例如 1520020585.536527),我们可以使用 fromtimestamp 将其转换为日期时间 tz 感知对象,如下所示:
from datetime import datetime, timezone
ts = 1520020585.536527 # remember me? I'm the epoch example output from above
utc_date = datetime.fromtimestamp(ts, tz=timezone.utc) # outputs: datetime date object
注意:fromtimestamp 需要一个“POSIX”时间戳,我们在这里提供的tz 只是为了避免幼稚的日期时间对象。 fromtimestamp 将为我们提供的时区执行任何需要的转换,但是哪个时区比 UTC 更好,对吧?
注意:尽管 python 文献明确将输入 fromtimestamp() 引用为“POSIX”时间戳,但并未明确将输入称为“POSIX 兼容”,因此我们只能从其文献的其他部分推断“POSIX”时间戳是什么,例如当它将 POSIX 输出称为“由 time.time() 返回”时