Python datetime-在使用strptime获取日,月,年之后设置固定的小时和分钟


174

我已经成功地将26 Sep 2012格式转换为26-09-2012使用:

datetime.strptime(request.POST['sample_date'],'%d %b %Y')

但是,我不知道如何将上述时间设置为11:59。有谁知道如何做到这一点?

请注意,这可以是将来的日期,也可以是任何随机的日期,而不仅仅是当前日期。

Answers:


363

用途datetime.replace

from datetime import datetime
date = datetime.strptime('26 Sep 2012', '%d %b %Y')
newdate = date.replace(hour=11, minute=59)

感谢您的快速答复!:)只是好奇是否有一种方法可以在没有多余的日期变量的情况下进行操作?(我是python新手)
user1678031 2012年

2
是的,就这样做date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59)。我使用了额外的变量,因此行不会太长:)
nneonneo 2012年

14
还值得注意的是:datetime.replace返回日期时间的新副本(因为它datetime是不可变的):str.replace就此而言。
nneonneo 2012年

我如何删除“ 2016-06-01”之后的所有内容,以使小时分秒消失?
PV8

46

datetime.replace()将提供最佳选择。此外,它还提供了替换日,年和月的工具。

假设我们有一个datetime对象,日期表示为: "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

8
与nneonneo发布于您的答案前五年的答案相比,您的答案有什么附加值?
塞缪尔·道祖
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.