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.

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)

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

8
Apa nilai tambah jawaban Anda terhadap jawaban nneonneo yang diposting 5 tahun sebelum jawaban Anda?
— Samuel Dauzon
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.