django python 时间设置为午夜

46 投票
5 回答
74797 浏览
提问于 2025-04-17 07:34

我有一个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_date2013-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)

撰写回答