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.