38

我有我的 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' 是只读的

4

5 回答 5

57

使用日期时间的“组合”与 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)

于 2013-06-05T13:58:31.473 回答
54

尝试这个:

import datetime
pub = lastItem.pub_date
end_date = datetime.datetime(pub.year, pub.month, pub.day)
于 2011-12-02T18:56:35.600 回答
23

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

def set_to_midnight(dt):
    midnight = datetime.time(0)
    return datetime.datetime.combine(dt.date(), midnight)
于 2011-12-02T18:55:18.303 回答
10

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

datetime.combine(dt.date(), datetime.min.time(), dt.tzinfo)
于 2017-12-04T11:16:46.993 回答
1

datetime年、月、日、小时等实例属性是只读的,因此您只需创建一个新datetime对象并将其分配给end_date.

于 2011-12-02T18:59:33.927 回答