Python datetime - mengatur jam dan menit tetap setelah menggunakan strptime untuk mendapatkan hari, bulan, tahun

174

Saya telah berhasil mengonversi sesuatu 26 Sep 2012format untuk 26-09-2012menggunakan:

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

Namun, saya tidak tahu cara mengatur jam dan menit dari sesuatu seperti di atas ke 11:59. Adakah yang tahu bagaimana melakukan ini?

Catatan, ini bisa berupa tanggal masa depan atau tanggal acak, bukan hanya tanggal saat ini.

pengguna1678031
sumber

Jawaban:

363

Gunakan datetime.replace:

from datetime import datetime
date = datetime.strptime('26 Sep 2012', '%d %b %Y')
newdate = date.replace(hour=11, minute=59)
nneonneo
sumber
Terima kasih atas balasan cepatnya! :) Hanya ingin tahu apakah ada cara untuk melakukannya tanpa variabel tanggal ekstra? (Saya seorang pemula python)
user1678031
2
Ya, lakukan saja date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59). Saya menggunakan variabel ekstra sehingga garisnya tidak terlalu panjang :)
nneonneo
14
Juga patut dicatat: datetime.replacemengembalikan salinan baru datetime (karena datetimetidak dapat diubah): seperti str.replacedalam hal itu.
nneonneo
Bagaimana saya bisa menghapus semuanya setelah '2016-06-01' sehingga menit dan detik hilang?
PV8
46

datetime.replace () akan memberikan opsi terbaik. Juga, ini menyediakan fasilitas untuk mengganti hari, tahun, dan bulan.

Misalkan kita memiliki datetimeobjek dan tanggal direpresentasikan sebagai: "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
Abhay Chauhan
sumber
8
Apa nilai tambah jawaban Anda terhadap jawaban nneonneo yang diposting 5 tahun sebelum jawaban Anda?
Samuel Dauzon