转换为Unix时间戳的Python代码

6

我正在尝试将现在的日期时间戳转换为Unix时间戳,但是下面的代码似乎被调用了,但是却直接跳到了我的应用程序的结尾,好像不喜欢time.mktime这部分。

from datetime import datetime
import time

now = datetime.now()
toDayDate = now.replace(hour=0, minute=0, second=0, microsecond=0)
newDate = time.mktime(datetime.strptime(toDayDate, "%Y-%m-%d %H:%M:%S").timetuple())
print(newDate)

添加一个 *time.mktime(*date... - thebjorn
2
strptime 根据格式规范解析日期字符串 -- toDayDate 不是日期字符串,而是一个日期,因此您不需要在那里解析任何内容... - mgilson
可能是将Python日期转换为Unix时间戳的重复问题。 - Martin Thoma
2个回答

13

更改

newDate = time.mktime(datetime.strptime(toDayDate, "%Y-%m-%d %H:%M:%S").timetuple())

newDate = time.mktime(datetime.timetuple())

例如,我做了这个:

from datetime import datetime
from time import mktime
t = datetime.now()
unix_secs = mktime(t.timetuple())

并且获得了 unix_secs = 1488214742.0

致谢@tarashypka- 如果您希望结果为UTC时间(例如,如果您的日期时间对象知道时区),请使用t.utctimetuple()


1
对于时区感知的日期时间对象,请使用utctimetuple()而不是timetuple() - mr.tarsa

12

在Python 3中,您可以使用datetime.timestamp()而不是使用now()来获取POSIX时间戳。

返回的值的类型是浮点型。timestamp()依赖于datetime,而这个又依赖于mktime()。然而,datetime.timestamp()支持更多的平台并且具有更宽的值范围。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接