मैं अवधि (एएम / पीएम) का उपयोग कैसे कर सकता हूं?


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)

क्या देता है? क्या पाइथन केवल अवधि को अनदेखा करता है जब तारीखों को पार्स करता है या क्या मैं कुछ बेवकूफी कर रहा हूं?

जवाबों:


213

पायथन time.strftimeडॉक्स कहते हैं:

जब स्ट्रैपटाइम () फ़ंक्शन के साथ उपयोग किया जाता है, तो %pनिर्देश केवल आउटपुट घंटे फ़ील्ड को प्रभावित करता है यदि %Iनिर्देश का उपयोग घंटे को पार्स करने के लिए किया जाता है।

यकीन है कि यह काम %Hकरने के लिए अपने को बदल रहा है %I


2
कौन महान है , जब तक कि अपने समय तार 12:00 है, ( %Iशुरू होता है 1 पर) !!
एंडी हेडन

1
@AndyHayden यह दोपहर 12 बजे या 12 बजे है। यकीन नहीं होता कि 0 AM या 0 PM समझ में आता है। केवल 24-घंटे के प्रारूप में 0 वां घंटा समझ में आता है, लेकिन तब यह AM / PM नहीं होता है।
arun

यह भी ध्यान रखें कि आपका लोकेल चेक में हो। यदि आप एक ऐसे लोकेल का उपयोग कर रहे हैं जो am / pm का उपयोग नहीं करता है, तो आपको एक लोकेल पर स्विच करना होगा जो am / pm का उपयोग करता है I%% I और% p का उपयोग किया और लोकेल के रूप में de_DE का उपयोग करते समय% p को खाली छोड़ दिया गया। En_GB पर स्विच करने से% p दृश्यमान हो गया।
टॉरस्टोन

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

के %Hबजाय प्रारूप का उपयोग कर रहा है %I। चूंकि %H"24-घंटे" प्रारूप है, इसलिए यह संभवत: %pसूचना को खारिज कर रहा है। यदि आप इसे बदलते हैं तो यह ठीक काम करता %Hहै %I



15

% I के साथ% H (24-घंटे की घड़ी पर घंटा) को बदलने का प्रयास करें (12-घंटे की घड़ी पर घंटा)?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.