我有一个以UTC为单位的时间,从它开始我想要的是从epoch开始的秒数.

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

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

2012年4月1号,协调世界时与纪元相比是1333238400,但这上面返回的是1333234800,相差1小时.

所以strftime似乎考虑了我的系统时间,并在某处应用了时区转换.我觉得datetime很天真?

我怎么才能避开呢?如果可能,避免导入其他库,除非是标准库.(我担心可移植性).

推荐答案

如果要将python日期时间转换为纪元以来的秒数,可以显式执行以下操作:

>>> (datetime.datetime(2012,04,01,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

Why you should not use 100

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相关问答推荐

如何根据另一列值用字典中的值替换列值

如何比较numPy数组中的两个图像以获取它们不同的像素

运行终端命令时出现问题:pip start anonymous"

如果值不存在,列表理解返回列表

如何获取TFIDF Transformer中的值?

为什么默认情况下所有Python类都是可调用的?

log 1 p numpy的意外行为

使用Python更新字典中的值

用砂箱开发Web统计分析

matplotlib + python foor loop

如何防止Pandas将索引标为周期?

如何获取Python synsets列表的第一个内容?

polars:有效的方法来应用函数过滤列的字符串

pandas:在操作pandora之后将pandora列转换为int

Python Mercury离线安装

python的文件. truncate()意外地没有截断'

如何在SQLAlchemy + Alembic中定义一个"Index()",在基表中的列上

如何在Quarto中的标题页之前创建序言页

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError

如何在基于时间的数据帧中添加计算值