django python 时间设置为午夜
我有一个Django对象的日期时间,但这个时间可以是一天中的任何时刻。也就是说,它可能是一天中的任何时间,但我需要把这个时间设置为00:00:00(还有另一个日期需要设置为23:59:59,不过原理是一样的)。
end_date = lastItem.pub_date
目前结束日期是2002-01-11 12:34:56。我需要做什么才能把它改成00:00:00呢?
我试过:
end_date.hour = '00'
但是得到了这个错误:'datetime.datetime'对象的'time'属性是只读的。
5 个回答
23
你确定不想用日期而不是日期时间吗?如果你总是把时间设置为午夜,那你应该考虑只用日期。如果你真的想用日期时间,这里有一个函数可以让你得到同一天的午夜时间:
def set_to_midnight(dt):
midnight = datetime.time(0)
return datetime.datetime.combine(dt.date(), midnight)
66
使用日期时间的“combine”功能,配合时间的最小值和最大值,可以得到你想要的两个日期时间。
举个例子:
from datetime import date, datetime, time
pub_date = date.today()
min_pub_date_time = datetime.combine(pub_date, time.min)
max_pub_date_time = datetime.combine(pub_date, time.max)
如果你的 pub_date
是 2013-06-05
,结果会是:
min_pub_date_time
-> datetime.datetime(2013, 6, 5, 0, 0)
(表示2013年6月5日的开始时间,也就是零点)
max_pub_date_time
-> datetime.datetime(2013, 6, 5, 23, 59, 59, 999999)
(表示2013年6月5日的结束时间,也就是晚上11点59分59秒999999微秒)
57
试试这个:
import datetime
pub = lastItem.pub_date
end_date = datetime.datetime(pub.year, pub.month, pub.day)