Python datetime - gün, ay, yıl için strptime kullandıktan sonra sabit saat ve dakikayı ayarlama


174

Başarıyla kullanarak 26 Sep 2012biçim bir şey dönüştürdüm 26-09-2012:

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

Ancak, yukarıdaki gibi bir şeyin saatini ve dakikasını 11:59'a nasıl ayarlayacağımı bilmiyorum. Bunu nasıl yapacağını bilen var mı?

Bu, yalnızca geçerli tarih değil, gelecekteki bir tarih veya rastgele bir tarih olabilir.

Yanıtlar:


363

Kullanım datetime.replace:

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

Hızlı cevap için teşekkürler! :) Ekstra tarih değişkeni olmadan bunu yapmanın bir yolu olup olmadığını merak mı ediyorsunuz? (Ben bir python acemi değilim)
user1678031 18:12

2
Evet, sadece yap date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59). Ekstra değişken kullandım, böylece çizgi çok uzun değildi :)
nneonneo 18:12

14
Ayrıca dikkat çekmeye değer: datetime'ın datetime.replaceyeni bir kopyasını döndürür ( datetimedeğişmez olduğu için): bu konuda olduğu gibidir str.replace.
nneonneo

'2016-06-01' den sonra her şeyi nasıl kaldırabilirim ki saat dakika ve saniye ortadan kalkacak?
PV8

47

datetime.replace () en iyi seçenekleri sunar. Ayrıca, gün, yıl ve ay değiştirme imkanı da sağlar.

Bir nesnemiz olduğunu datetimeve tarihin şu şekilde temsil edildiğini varsayalım : "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
Sizinkinin 5 yıl önce nneonneo'nun cevabına verdiği cevap nedir?
Samuel Dauzon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.