Python datetime - การตั้งค่าชั่วโมงและนาทีคงที่หลังจากใช้ strptime เพื่อรับวัน, เดือน, ปี


174

ฉันได้แปลง26 Sep 2012รูปแบบการ26-09-2012ใช้บางอย่างเรียบร้อยแล้ว:

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

อย่างไรก็ตามฉันไม่ทราบวิธีตั้งค่าชั่วโมงและนาทีของบางอย่างเช่นด้านบนเป็น 11:59 ไม่มีใครรู้วิธีการทำเช่นนี้?

โปรดทราบว่านี่อาจเป็นวันที่ในอนาคตหรือวันที่สุ่มไม่ได้เป็นเพียงวันที่ปัจจุบัน

คำตอบ:


363

การใช้datetime.replace:

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

ขอบคุณสำหรับการตอบกลับอย่างรวดเร็ว! :) แค่อยากรู้อยากเห็นหากมีวิธีการทำโดยไม่มีตัวแปรวันพิเศษหรือไม่ (ฉันเป็นมือใหม่ในภาษาไพ ธ อน)
user1678031

2
date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59)ใช่เพียงแค่ทำ ผมใช้ตัวแปรพิเศษเพื่อให้สายไม่ยาวเกินไป :)
nneonneo

14
ควรสังเกตอีกด้วย: datetime.replaceส่งคืนสำเนาใหม่ของวันที่และเวลา (เนื่องจากdatetimeไม่สามารถเปลี่ยนแปลงได้): มันเหมือนกับstr.replaceในเรื่องนั้น
nneonneo

ฉันจะลบทุกอย่างหลังจาก '2016-06-01' เพื่อให้นาทีและวินาทีนั้นหายไปได้อย่างไร
PV8

46

datetime.replace ()จะให้ตัวเลือกที่ดีที่สุด นอกจากนี้ยังให้ความสะดวกในการเปลี่ยนวันปีและเดือน

สมมติว่าเรามีdatetimeวัตถุและวันที่แสดงเป็น: "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
มูลค่าเพิ่มของคำตอบของคุณเทียบกับคำตอบของ nneonneo ที่โพสต์เมื่อ 5 ปีก่อนคืออะไร?
ซามูเอล Dauzon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.