我成功地将2012年9月26日的格式转换为2012年9月26日的格式:
datetime.strptime(request.POST['sample_date'],'%d %b %Y')
但是,我不知道如何将上述内容的小时和分钟设置为11:59。有人知道怎么做吗?
注意,这可以是未来日期或任何随机日期,而不仅仅是当前日期。
我成功地将2012年9月26日的格式转换为2012年9月26日的格式:
datetime.strptime(request.POST['sample_date'],'%d %b %Y')
但是,我不知道如何将上述内容的小时和分钟设置为11:59。有人知道怎么做吗?
注意,这可以是未来日期或任何随机日期,而不仅仅是当前日期。
当前回答
Datetime.replace()将提供最佳选项。此外,它还提供了替换日、年和月的功能。
假设我们有一个datetime对象,date表示为: “2017-05-04”
>>> from datetime import datetime
>>> date = datetime.strptime('2017-05-04',"%Y-%m-%d")
>>> print(date)
2017-05-04 00:00:00
>>> date = date.replace(minute=59, hour=23, second=59, year=2018, month=6, day=1)
>>> print(date)
2018-06-01 23:59:59
其他回答
使用datetime.replace:
from datetime import datetime
dt = datetime.strptime('26 Sep 2012', '%d %b %Y')
newdatetime = dt.replace(hour=11, minute=59)
另外值得注意的是:datetime。Replace返回datetime的新副本(因为datetime是不可变的):在这方面,它类似于str.replace。
Datetime.replace()将提供最佳选项。此外,它还提供了替换日、年和月的功能。
假设我们有一个datetime对象,date表示为: “2017-05-04”
>>> from datetime import datetime
>>> date = datetime.strptime('2017-05-04',"%Y-%m-%d")
>>> print(date)
2017-05-04 00:00:00
>>> date = date.replace(minute=59, hour=23, second=59, year=2018, month=6, day=1)
>>> print(date)
2018-06-01 23:59:59
将日期时间转换为max[23:59:59.99]或min [0:00:00]
import datetime
def dt_time_min(dt):
"""converts any datetime/date to new datetime with same date and time=0:00:00"""
return datetime.datetime.combine(dt, datetime.time.min)
def dt_time_max(dt):
"""converts any datetime/date to new datetime with same date and time=23:59:59.999999"""
return datetime.datetime.combine(dt, datetime.time.max)
如果你有一个日期作为datetime。Datetime(或Datetime .date)实例,并希望通过来自Datetime的time来组合它。实例,然后你可以使用类方法datetime.datetime.combine:
import datetime
dt = datetime.datetime(2020, 7, 1)
t = datetime.time(12, 34)
combined = datetime.datetime.combine(dt.date(), t)