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.