1

我一直在努力确定如何通过 Python 生成今天和昨天(午夜)的 POSIX (UNIX) 时间值。我创建了这段代码,但一直在纠结如何将它们转换为 POSIX 值:

from datetime import datetime, timedelta
import time
today_string = datetime.now().strftime('%Y-%m-%d 00:00:00')
yesterday_string = (datetime.now() - timedelta(0)).strftime('%Y-%m-%d 00:00:00')

today = datetime.strptime(today_string, '%Y-%m-%d %H:%M:%S')
yesterday = datetime.strptime(yesterday_string, '%Y-%m-%d %H:%M:%S')

print time.mktime(today).timetuple()

此代码产生异常:

TypeError: argument must be 9-item sequence, not datetime.datetime

在这一点上,我已经束手无策了。感谢您提供的任何帮助。

4

3 回答 3

2

您应该将该timetuple()方法应用于today对象,而不是应用于以下结果time.mktime(today)

>>> time.mktime(today.timetuple())
1345845600.0

顺便说一句,我错了还是yesterday会等于today你的代码?

编辑: 要获得今天的 POSIX 时间,您只需执行以下操作:

time.mktime(datetime.date.today().timetuple())
于 2012-08-25T08:11:05.520 回答
1

@Bakuriu 就在这里。但是你让这个过于复杂了。

看看这个:

from datetime import date, timedelta
import time

today = date.today()
today_unix = time.mktime(today.timetuple())

yesterday = today - timedelta(1)
yesterday_unix = time.mktime(yesterday.timetuple())

由于该date对象不保持时间,它会将其重置为午夜。

您还可以将最后一部分替换为:

yesterday_unix = today_unix - 86400

但请注意,它在夏令时切换时无法正常工作(即您最终会在凌晨 1 点或下午 23 点结束)。

于 2012-08-25T08:24:37.207 回答
0

从 datetime 对象获取 unix 时间戳作为字符串和浮点数:

datetime.now().strftime('%s')
'1345884732'

time.mktime(datetime.now().timetuple())
1345884732.0
于 2012-08-25T08:58:20.037 回答