python - 使用 strftime 将 python 日期时间转换为纪元

标签 python datetime utc epoch strftime

我有一个 UTC 时间,我想要从纪元开始的秒数。

我正在使用 strftime 将其转换为秒数。以 2012 年 4 月 1 日为例。

>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'

2012 年 4 月 1 日 UTC 从纪元开始是 1333238400,但以上返回 1333234800,相差 1 小时。

所以看起来 strftime 正在考虑我的系统时间并在某处应用时区转换。我认为 datetime 纯粹是幼稚的吗?

我怎样才能解决这个问题?如果可能避免导入其他库,除非是标准的。 (我有便携性问题)。

最佳答案

如果您想将 python 日期时间转换为自纪元以来的秒数,您可以明确地执行此操作:

>>> (datetime.datetime(2012,4,1,0,0) - datetime.datetime(1970,1,1)).total_seconds()
1333238400.0

在 Python 3.3+ 中,您可以使用 timestamp()而是:

>>> datetime.datetime(2012,4,1,0,0).timestamp()
1333234800.0

为什么不应该使用 datetime.strftime('%s')

Python 实际上并不支持将 %s 作为 strftime 的参数(如果您检查 http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior 它不在列表中),它工作的唯一原因是因为 Python 正在将信息传递给系统的 strftime,它使用您本地的时区。

>>> datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'

关于python - 使用 strftime 将 python 日期时间转换为纪元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11743019/

相关文章:

python - 解决 SQL 中的三向循环引用 (Django)

python - thinkpython2 右对齐第 70 列的含义

java - 如何将 ISO 8601 格式的 DateTime 转换为 Java 中的另一个时区?

MYSQL - 将日期从 2020 年更改为 2011 年

java - 如何使用 java.time.ZonedDateTime 生成 UTC 格式的原始 long 值

php - MySql UNIX_TIMESTAMP() 存储为 UTC,夏令时临近

python - 使用Python/PyGreSQL,如何有效地处理大型结果集?

jquery - 自定义 jquery 验证器无法在 iPad 上运行

c# - 如何根据日期时间和时区偏移获取 UTC 时间?

python - 如何识别指定范围的列中的某些行?