ฉันจะบัญชีระยะเวลา (AM / PM) โดยใช้ strftime ได้อย่างไร


152

โดยเฉพาะฉันมีรหัสที่ทำให้สิ่งนี้ง่ายขึ้น:

from datetime import datetime
date_string = '2009-11-29 03:17 PM'
format = '%Y-%m-%d %H:%M %p'
my_date = datetime.strptime(date_string, format)

# This prints '2009-11-29 03:17 AM'
print my_date.strftime(format)

สิ่งที่ช่วยให้? Python ไม่สนใจตัวระบุช่วงเวลาเมื่อแยกวิเคราะห์วันที่หรือฉันกำลังทำอะไรโง่ ๆ ?

คำตอบ:


213

Python time.strftimedocsพูดว่า:

เมื่อใช้กับฟังก์ชั่น strptime () %pคำสั่งจะมีผลเฉพาะกับฟิลด์ชั่วโมงเอาท์พุทหาก%Iมีการใช้คำสั่งเพื่อแยกวิเคราะห์ชั่วโมง

การเปลี่ยนของคุณ%Hเพื่อให้%Iใช้งานได้


2
เป็นสิ่งที่ดีเว้นแต่ว่าเวลาของคุณจะมี 0.00 น. ( %Iเริ่มที่ 1) !!
Andy Hayden

1
@AndyHayden เวลา 12.00 น. หรือ 12.00 น. ไม่แน่ใจว่า 0:00 หรือ 0:00 เหมาะสมแล้วหรือไม่ เฉพาะในรูปแบบ 24 ชั่วโมง 0 ชั่วโมงนั้นสมเหตุสมผล แต่ไม่ใช่ AM / PM
อรุณ

นอกจากนี้โปรดทราบว่าให้มีสถานที่ของคุณในการตรวจสอบ หากคุณใช้ภาษาที่ไม่ใช้ am / pm คุณจะต้องเปลี่ยนเป็นภาษาที่ใช้ am / pm ฉันใช้% I และ% p และ% p ถูกปล่อยว่างไว้เมื่อใช้ de_DE เป็นภาษา เปลี่ยนเป็น en_GB ทำให้% p มองเห็นได้
Torsten

56
format = '%Y-%m-%d %H:%M %p'

รูปแบบที่จะใช้แทน%H %Iเนื่องจาก%Hเป็นรูปแบบ "24 ชั่วโมง" จึงเป็นเพียงการทิ้ง%pข้อมูล มันทำงานได้ดีถ้าคุณเปลี่ยนไป%H%I



15

ลองเปลี่ยน% H (ชั่วโมงเป็นนาฬิกา 24 ชั่วโมง) ด้วย% I (ชั่วโมงในนาฬิกาแบบ 12 ชั่วโมง) หรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.