怎样才能在午夜的Python为昨天和今天POSIX值?(How can I generate POS

2019-10-17 03:57发布

我一直在努力,以确定我怎么能产生今天和昨天(午夜)通过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

在这一点上,我在我束手无策。 您可以提供任何帮助表示赞赏。

Answer 1:

你应该应用timetuple()方法到today的对象,而不是结果time.mktime(today)

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

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

编辑:要获取POSIX时间今天你可以简单地做:

time.mktime(datetime.date.today().timetuple())


Answer 2:

@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点结束)。



Answer 3:

充分利用DateTime对象为一个字符串,作为浮动Unix时间戳:

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

time.mktime(datetime.now().timetuple())
1345884732.0


文章来源: How can I generate POSIX values for yesterday and today at midnight in Python?