django python日期时间设置为午夜

时间:2011-12-02 18:47:33

标签: python django date datetime date-manipulation

我有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 个答案:

答案 0 :(得分:45)

试试这个:

import datetime
pub = lastItem.pub_date
end_date = datetime.datetime(pub.year, pub.month, pub.day)

答案 1 :(得分:40)

使用datetimes的“combine”与time.min和time.max将同时提供两个日期时间。 例如:

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年6月5日的结果:

min_pub_date_time - > datetime.datetime(2013,6,5,0,0)

max_pub_date_time - > datetime.datetime(2013,6,5,23,59,59,999999)

答案 2 :(得分:19)

您确定不想使用日期而不是日期时间吗?如果您总是将时间设置为午夜,则应考虑使用日期。如果你真的想使用日期时间,这里有一个函数可以在午夜得到同一天:

def set_to_midnight(dt):
    midnight = datetime.time(0)
    return datetime.datetime.combine(dt.date(), midnight)

答案 3 :(得分:1)

datetime实例属性(如年,月,日,小时等)为read-only,因此您只需创建一个新的datetime对象并将其分配给end_date

答案 4 :(得分:1)

对于tz感知日期,它应该是:

datetime.combine(dt.date(), datetime.min.time(), dt.tzinfo)