Python datetime - встановлення фіксованої години та хвилини після використання strptime для отримання дня, місяця, року


174

Я успішно перетворив щось із 26 Sep 2012формату на 26-09-2012використання:

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

Однак я не знаю, як встановити годину і хвилину чогось подібного до 11:59. Хтось знає, як це зробити?

Зауважте, це може бути майбутня дата або будь-яка випадкова, а не лише поточна дата.

Відповіді:


363

Використання datetime.replace:

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

Дякуємо за швидку відповідь! :) Просто цікаво, чи є спосіб зробити це без додаткової змінної дати? (Я новачок в
пітоні

2
Так, просто зробіть date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59). Я використовував додаткову змінну, щоб лінія не була занадто довгою :)
nneonneo

14
Також варто відзначити: datetime.replaceповертає нову копію часу (оскільки datetimeє непорушною): це як str.replaceу цьому плані.
nneonneo

Як я можу видалити все після "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, опублікованої за 5 років до вашої?
Самуель Доусон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.