我可以在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
这将计算自 之后经过的时间。
我想要做的是将当设置为非常特定的时间。而那个时间将取决于今天的情况。我希望当从今天起的前一个星期一的午夜(零小时)。 我该怎么做?
答案 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