首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中,如何将`datetime`对象转换为秒?

在Python中,如何将`datetime`对象转换为秒?
EN

Stack Overflow用户
提问于 2011-10-22 01:10:00
回答 10查看 513K关注 0票数 263

为这个简单的问题道歉...我是Python的新手。我到处找了找,似乎什么也没找到。

我有一堆datetime对象,我想为每个对象计算自过去固定时间以来的秒数(例如,自1970年1月1日以来)。

代码语言:javascript
复制
import datetime
t = datetime.datetime(2009, 10, 21, 0, 0)

这似乎只是区分具有不同日期的日期:

代码语言:javascript
复制
t.toordinal()

任何帮助都是非常感谢的。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-10-22 01:21:37

对于1970年1月1日这一特殊日期,有多个选项。

对于任何其他开始日期,您需要以秒为单位获取两个日期之间的差值。减去两个日期得到一个timedelta对象,该对象在Python2.7中有一个total_seconds()函数。

代码语言:javascript
复制
>>> (t-datetime.datetime(1970,1,1)).total_seconds()
1256083200.0

开始日期通常以协调时为单位指定,因此为获得正确的结果,您输入到此公式中的datetime也应以协调时为单位。如果您的datetime尚未使用UTC,则需要在使用它之前对其进行转换,或者附加一个具有适当偏移量的tzinfo类。

正如注释中所指出的,如果您的datetime附加了tzinfo,那么在开始日期时也需要一个,否则减法将失败;对于上面的示例,如果使用Python2,我将添加tzinfo=pytz.utc;如果使用Python3,我将添加tzinfo=timezone.utc

票数 272
EN

Stack Overflow用户

发布于 2015-05-11 04:36:48

从Python3.3开始,使用datetime.timestamp()方法就变得非常简单。当然,只有当您需要1970-01-01 UTC的秒数时,这才是有用的。

代码语言:javascript
复制
from datetime import datetime
dt = datetime.today()  # Get timezone naive now
seconds = dt.timestamp()

返回值将是一个表示偶数秒的浮点数。如果datetime是时区naive (如上例所示),则假定datetime对象表示本地时间,即从您所在位置的当前时间到1970-01-01 UTC的秒数。

票数 176
EN

Stack Overflow用户

发布于 2011-10-22 01:14:10

要获取Unix时间(自1970年1月1日以来的秒数):

代码语言:javascript
复制
>>> import datetime, time
>>> t = datetime.datetime(2011, 10, 21, 0, 0)
>>> time.mktime(t.timetuple())
1319148000.0
票数 133
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7852855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档