我有一个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' 是只读的
我有一个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' 是只读的
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)
max_pub_date_time
-> datetime.datetime(2013, 6, 5, 23, 59, 59, 999999)
试试这个:
import datetime
pub = lastItem.pub_date
end_date = datetime.datetime(pub.year, pub.month, pub.day)
end_date.replace(hour=0, minute=0, second=0)
。 - Andrew Clarkdatetime.datetime.replace()
在我使用 second
和 microsecond
关键字参数时运行良好,请确保您拥有一个 datetime.datetime
实例而不是一个 datetime.date
。 - Andrew Clark.replace()
可能会为一个已知的日期时间对象返回一个未规范化的值,这可能会在 DST 转换周围引入 ~1 小时的误差。.combine()
和 datetime()
方法都会剥离时区信息,以便您可以添加正确的值,而不是意外使用 .replace()
返回的可能不正确的值。详情请参见:https://dev59.com/uXRC5IYBdhLWcg3wOOP1#11236372 - jfs你确定不想使用日期而不是日期时间吗?如果你总是将时间设置为午夜,你应该考虑使用日期。如果你真的想使用日期时间,这里有一个函数可以获取同一天的午夜:
def set_to_midnight(dt):
midnight = datetime.time(0)
return datetime.datetime.combine(dt.date(), midnight)
midnight = datetime.time(23, 59, 59)
- Gavin Wahldatetime.combine(dt.date(), datetime.min.time())
对我起作用了。 - polpetti对于带有时区信息的日期,应该是:
datetime.combine(dt.date(), datetime.min.time(), dt.tzinfo)