2012-03-01 17 views
38

क्या पाइथन डेटाटाइम प्रिंट करने के लिए कोई प्रारूप है जो दिनांक और समय पर शून्य-पैडिंग का उपयोग नहीं करेगा?शून्य-पैडिंग के बिना पायथन डेटाटाइम स्वरूपण

स्वरूप अब मैं उपयोग कर रहा हूँ:

mydatetime.strftime('%m/%d/%Y %I:%M%p') 

परिणाम: 2012/02/29 17:03
वांछित: 2012/02/29 5:03 PM पर

क्या प्रारूप '0 'के बजाय' 02 'के रूप में महीने का प्रतिनिधित्व करेगा, और '05: 03 पीएम'

उत्तर

35

के साथ उपलब्ध स्वरूपण विकल्प 0 सभी शून्य-पैड होगा। आप निश्चित रोल के आप समारोह स्वरूपण ही कर सकता है, लेकिन इस मामले में सबसे आसान समाधान पोस्ट-प्रक्रिया के लिए datetime.strftime() का परिणाम हो सकता है:

s = mydatetime.strftime('%m/%d/%Y %I:%M%p').lstrip("0").replace(" 0", " ") 

(यही कारण है, अगर आप तय करते हैं कि ऐसा करने से वास्तव में लायक है मुसीबत क्यों नहीं बस शून्य में छोड़ दें?)

+1

स्वेन- क्योंकि मैं फेसबुक की तरह दिखना चाहता हूं। धन्यवाद! – Yarin

+0

यह उपयोगी है। मुझे गैर-गद्देदार दिनों के साथ यूआरएल बनाने की ज़रूरत थी, और इन्हें इनमें से 3 को एक साथ स्ट्रिंग करना था: dt.strftime ("% B _") + dt.strftime ("% d")। Lstrip ("0") + dt.strftim \ ई (", _% वाई") – philshem

+2

हाथ से समय लिखते समय उत्तरी अमेरिका में बहुत कम लोग शून्य-गद्देदार घंटे का उपयोग करते हैं। –

64

नई स्ट्रिंग स्वरूपण प्रणाली strftime का विकल्प प्रदान करती है। यह काफी पठनीय है - वास्तव में, यह उस खाते पर strftime के लिए बेहतर हो सकता है।

>>> '{d.month}/{d.day}/{d.year}'.format(d=datetime.datetime.now()) 
'3/1/2012' 

के बाद से आप शायद मिनट क्षेत्र में शून्य गद्दी चाहते हैं, आप ऐसा कर सकता है:

>>> '{d.month}/{d.day}/{d.year} {d.hour}:{d.minute:02}'.format(d=now) 
'3/1/2012 20:00' 

यदि आप चाहते हैं "नियमित" नहीं तथ्य यह है कि यह शून्य-पैड नहीं है उल्लेख करने के लिए "सैन्य" समय के बजाय समय, आप अभी भी मानक strftime विनिर्देशकों का उपयोग कर सकते हैं।

'{d.month}/{d.day}/{d.year} {d:%l}:{d.minute:02}{d:%p}'.format(d=now) 
'4/4/2014 6:00PM' 

यह कुछ हद तक कम पठनीय बन जाता है, अफसोस: सुविधाजनक, हमारे प्रयोजनों के लिए, strftimeकरता 12 घंटे समय एक अग्रणी शून्य के बजाय एक खाली साथ गद्देदार के लिए एक कोड प्रदान करते हैं। और @mlissner बताते हैं, strftime 1 9 00 से पहले तिथियों के लिए कुछ (सभी?) प्लेटफ़ॉर्म पर असफल हो जाएगा।

+1

कूल-यह स्वरूपण प्रणाली कितनी नई है? - मैंने इसे कभी नहीं देखा है – Yarin

+1

यह पाइथन 2.6 के आसपास रहा है। (यह _that_ new नहीं है।) – senderle

+3

महीने का स्पेल करने के लिए, उदाहरण के लिए, आप निम्न का उपयोग कर सकते हैं: '" {0.day} {0:% B% Y} "प्रारूप (डी) 'जो आपको' इस टिप्पणी के दिन के रूप में '2 अगस्त 2013' :) – Jens

51

उपरोक्त "सभी या कोई भी" अग्रणी शून्य पहलू से बचने के लिए वैकल्पिक विकल्प है, क्षेत्र के प्रकार:

mydatetime.strftime('%-m/%d/%Y %-I:%M%p') 

फिर इस: '2015/04/10 03:00 हूँ'

बन जाता है: '2015/04/10 3:00 हूँ'

आप जगह में एक शून्य से वैकल्पिक रूप से कर सकते हैं वांछित अगर दिन के सामने।

+1

यह वास्तव में सही उत्तर है, और यह अन्य प्रणालियों (जैसे matplotlib और पांडा) में काम करता है। –

+12

महान उत्तर, लेकिन केवल लिनक्स। विंडोज पर काम नहीं करेगा। http://stackoverflow.com/questions/10807164/python-time-formatting- अलग-अलग- विन्डोज़ – ExactaBox

2

लिनक्स पर क्रिस फ्रीमैन से अच्छा जवाब।

खिड़कियों पर, यह है:

mydate.strftime('%#m/%#d/%Y') 

सोचा कि मदद कर सकता है।

16

स्वीकृत जवाब नहीं एक उचित समाधान (IMHO) उचित दस्तावेज तरीके:

लिनक्स में "#" की जगह "-":

% -d,% -एच,% मैं, % -j,% -m,% -M,% -S,% -U,% -w,% -W,% -y,% -Y

विंडोज़ में "-" को प्रतिस्थापित किया गया है "#" :

% # डी,% # एच,% # मैं,% # जे,% # एम,% # एम,% # एस,% # यू,% # डब्ल्यू,% # डब्ल्यू,% # वाई,% #Y

#Linux 
mydatetime.strftime('%-m/%d/%Y %-I:%M%p') 

# Windows 
mydatetime.strftime('%#m/%d/%Y %#I:%M%p') 

स्रोत: https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx

Sagneta द्वारा कहा गया है: विंडोज पर # हैश चाल केवल देशी अजगर निष्पादन करने के लिए उपलब्ध है। यह सिग्विन आधारित पायथन कार्यान्वयन के लिए काम नहीं करेगा।

+2

यह सही है। ध्यान दें कि विंडोज़ पर # हैश चाल केवल देशी पायथन निष्पादन योग्य के लिए उपलब्ध है। दूसरे शब्दों में, यह साइगविन आधारित पायथन कार्यान्वयन के लिए काम नहीं करेगा। – sagneta

+0

वाह यह जानना बहुत अच्छा है लेकिन मैं परिणाम से डरता हूं। मैं डाटाबेस से लौटाए गए डेट फॉर्मेटिंग का परीक्षण कर रहा हूं और मुझे प्रत्येक टेस्ट के लिए अपेक्षित स्वरूपण में प्रवेश करने की आवश्यकता है और इसमें जटिलताएं शामिल हैं। – Keith