情景A: 假设当前时间是2014年1月12日凌晨3点,我希望在凌晨3点到凌晨3点之前的午夜过两次。
所以,我期待从2014年1月12日凌晨3点开始1月12日00:00和1月11日中午
情景B:
假设当前时间是2014年1月13日下午6:37,我希望在下午6:37之前的午夜和中午3点之前得到两次 所以,我期待2014年1月13日下午6点37分当前时间1月13日00:00和1月13日中午
时代可以在时代 - 我只是无法弄清楚在给定当前时间的情况下获得两次数学。
有人能帮助我吗?
答案 0 :(得分:4)
您可以使用datetime.datetime.combine
合并日期和时间,这样您就可以获得当前日期:
today = datetime.datetime.now().date()
创造你的时代,例如:
midday = datetime.time(hour=12)
将它们加在一起,例如:
midday_today = datetime.datetime.combine(today, midday)
这比尝试从当前时间添加或减去时间要复杂得多。要确定您今天或昨天是否需要,您可以检查我们是在midday
之前还是之后
if datetime.datetime.now().time() < midday:
把它们放在一起:
import datetime
now = datetime.datetime.now()
today = now.date()
midnight = datetime.time(hour=0)
midday = datetime.time(hour=12)
last_midnight = datetime.datetime.combine(today, midnight)
if now.time() < midday:
yesterday = today - datetime.timedelta(days=1)
last_midday = datetime.datetime.combine(yesterday, midday)
else:
last_midday = datetime.datetime.combine(today, midday)