如何将python日期时间设置为(稍微)相对于现在的某个时间?

时间:2014-09-10 04:28:12

标签: python datetime

我可以在python中做一些基本的时间计算,例如:

when = 'Mon Sep 08 00:00:00 +0000 2014'
frmt = "%a %b %d %H:%M:%S +0000 %Y"

then = datetime.datetime.strptime(when,frmt)
now = datetime.datetime.now()
delta = now-then
print delta

这将计算自 之后经过的时间。

我想要做的是将设置为非常特定的时间。而那个时间将取决于今天的情况。我希望从今天起的前一个星期一的午夜(零小时)。 我该怎么做?

2 个答案:

答案 0 :(得分:3)

>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2014, 9, 10, 12, 40, 25, 525000)
>>> when = now.replace(hour=0, minute=0, second=0, microsecond=0)
>>> when
datetime.datetime(2014, 9, 10, 0, 0)
>>> when.weekday()
2
>>> when = when - datetime.timedelta(when.weekday())
>>> when
datetime.datetime(2014, 9, 8, 0, 0)

答案 1 :(得分:1)

这应该可以满足您的需求。

from datetime import datetime, timedelta
today = datetime.now()
days_from_monday = today.weekday()
if days_from_monday == 0:
    days_from_monday = 7
monday = today + timedelta(days=-days_from_monday)
midnight_monday = monday.replace(hour=0, minute=0, second=0)

datetime.replace可用于轻松更改日期时间的某些部分,但请注意,日期时间是不可变的,而.replace会返回一个新日期。

datetime.weekday会为您提供一周中的某一天。星期一= 0到星期六= 6