繁体   English   中英

自1970年1月1日以来,我如何获得Python日期时间对象的秒数?

[英]How do I get seconds since 1/1/1970 of a Python datetime object?

我正在使用Python 3.7和Django。 我想得到自1970年1月1日以来datetime对象的秒数(或毫秒)。 按照这里的建议 - 在Python中,如何将`datetime`对象转换为秒? ,我实施了

now = datetime.now()
...
return [len(removed_elts) == 0, score, now.total_seconds()]

但是“now.total_seconds()”行给出了错误

AttributeError: 'datetime.datetime' object has no attribute 'total_seconds'

自1970年1月1日起获得秒数的正确方法是什么?

now = datetime.now()
...
return [len(removed_elts) == 0, score, now.timestamp()]

这应该工作。

import datetime
first_date = datetime.datetime(1970, 01, 01)
time_since = datetime.datetime.now() - first_date
seconds = int(time_since.total_seconds())

与您提到的建议相反,您不会在timedelta对象上调用total_seconds() ,而是在datetime对象上调用,该对象根本没有此属性。

因此,Python 3.7(和2.7)的一个解决方案可以是:

import datetime

now = datetime.now()
then = datetime.datetime(1970,1,1)
...
return [len(removed_elts) == 0, score, (now - then).total_seconds()]

Python 3.3+的另一个更短但不太清晰(至少在第一眼看见)的解决方案(对于这个解释ababak ):

import datetime

now = datetime.now()
...
return [len(removed_elts) == 0, score, now.timestamp()]
import time
print(time.time())

输出:

1567532027.192546

你可以试试:

import datetime

now = datetime.datetime.now()
delta = (now - datetime.datetime(1970,1,1))
print(delta.total_seconds())

nowdatetime.datetime类型,没有.total_seconds()方法。

delta的类型为datetime.timedelta ,并且具有.total_seconds()方法。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM