2012-07-24 11 views
6

मैं datetime.month, datetime.day, और datetime.hour सहित डेटाटाइम ऑब्जेक्ट्स का उपयोग करने का प्रयास कर रहा हूं।डेटाटाइम ऑब्जेक्ट प्रारूप

समस्या यह है कि ये ऑब्जेक्ट्स (datetime.month कहें) मान 1, 2, 3, और इसी तरह के रूप में 12 दें। इसके बजाय, मुझे प्रारूप में यह आवश्यक है 01,02,03 और इसी तरह 12 पर। दिन और महीनों के साथ इसी तरह की समस्या।

मैं इस प्रारूप में कैसे स्विच कर सकता हूं?


मुझे एहसास हुआ कि यह एक बहुत ही स्पष्ट सवाल नहीं था:

मैं स्ट्रिंग एक शब्दकोश मैं टाइमस्टैम्प के साथ है से प्रिंट मूल्यों के लिए स्वरूपण उपयोग कर रहा हूँ।

तो, experssion मोटे तौर पर है:

print "%s-%s-%s"%(date.year, date.month, date.day, etc., len(str)) |

मेरे मूल्य मूल रूप से सही "%Y-%m-%d रूप (जैसे 2000-01-01) में थे। उपर्युक्त का उपयोग करके, मुझे 2000-1-1 मिलते हैं।

+0

आप पाएंगे कि '08' पायथन में कोई मान नहीं है। यदि आप उन्हें प्रिंट करना चाहते हैं, तो अलग-अलग गुणों का उपयोग करें। – geoffspear

+0

पायथन में मानों में एक प्रारूप नहीं है। जब आप इसे प्रिंट करते हैं या उसे स्ट्रिंग में कनवर्ट करते हैं तो आपको प्रारूप निर्दिष्ट करने की आवश्यकता होती है। –

+0

@MarkRansom ऊपर देखें, अगर मैं इन वस्तुओं के साथ स्ट्रिंग स्वरूपण का उपयोग कर रहा हूं, तो उन्हें परिभाषित किया गया है (महीने के साथ) 1 से 12 समावेशी। – ehertele

उत्तर

21

आप स्ट्रिंग स्वरूपण का उपयोग कर व्यक्तिगत विशेषताओं मुद्रित कर सकते हैं:

print ('%02d' % (mydate.month)) 

या अधिक हाल ही में स्ट्रिंग स्वरूपण (अजगर 2.6 में शुरू की गई):

print ('{0:02d}'.format(a.month)) # python 2.7+ -- '{:02d}' will work 

ध्यान दें कि यहां तक ​​कि:

print ('{0:%m}'.format(a)) # python 2.7+ -- '{:%m}' will work. 

काम करेगा।

या वैकल्पिक रूप से दिनांक वस्तुओं की strftime विधि का उपयोग कर:

print (mydate.strftime('%m')) 

और बस पूर्णता के लिए के लिए:

print (mydate.strftime('%Y-%m-%d')) 

अच्छी तरह से अपने संपादन में कोड की जगह लेगा।

+0

+1, लेकिन आपके पहले उदाहरण में, मैंने सोचा कि' str.format' को '%' ऑपरेटर पर प्राथमिकता दी गई थी? –

+0

@ रिकार्डो एल्टामिरानो - यह है, मैं अक्सर सी का उपयोग करता हूं, इसलिए मुझे हर बार '.format' रिलीज़ करने की आवश्यकता होती है, जिसे मैं इसका उपयोग करना चाहता हूं। मैंने अपडेट किया है – mgilson

+0

कोई चिंता नहीं; मैं बस यह सुनिश्चित करना चाहता था, क्योंकि मैं हमेशा '%' के स्थान पर 'str.format' का उपयोग करता हूं। मैं अपने जवाब में 'strftime' जोड़ने वाला था, लेकिन चूंकि यह पहले से ही आपके अंदर अच्छी तरह से कवर किया गया है, इसलिए मैं उस बिंदु को स्पष्ट करना चाहता था और अपना उत्तर प्राथमिक के रूप में रखना चाहता था। –

2

आप उन्हें तार करने के लिए परिवर्तित कर सकते हैं और बस पैड उन्हें:

import datetime 

d = datetime.datetime(2012, 5, 25) 

m = str(d.month).rjust(2, '0') 
print(m) # Outputs "05" 

या आप सिर्फ एक str.format सकता है:

import datetime 

d = datetime.datetime(2012, 5, 25) 

print("{:0>2}".format(d.month)) 

संपादित करें: अद्यतन सवाल का जवाब करने के लिए, आप इस की कोशिश की?

import datetime 
d = datetime.datetime(2012, 5, 25) 
print("{:0>4}-{:0>2}-{:0>2}".format(d.year, d.month, d.day)) 

आपने कहा कि आप मूल रूप से स्ट्रिंग स्वरूपण का उपयोग करके उन्हें प्रिंट कर रहे थे, तो आपने क्या बदल दिया? यह कोड:

print "%s-%s-%s"%(date.year, date.month, date.day, etc., len(str)) 

वास्तव में, कोई मतलब है नहीं के रूप में करने के लिए क्या तर्क आप में से गुजर रहे हैं मुझे लगता है बस date.year, date.month, और date.day के बाद से मैं एक छोटे से स्पष्ट नहीं हूँ, लेकिन यह स्पष्ट नहीं है।। len(str) के साथ आप क्या कार्रवाई कर रहे हैं?

+0

इसके बारे में जाने का कठिन तरीका लगता है, लेकिन चूंकि यह वास्तव में काम करता है तो आपको मुझसे टोकन +1 मिल जाएगा। –

+0

@MarkRansom True, यह एक कठिन तरीका है, लेकिन चूंकि मैंने देखा कि 'स्ट्रेटटाइम' पहले से ही पोस्ट करने से पहले ही कवर किया गया था, मुझे लगा कि मैं जो कवर नहीं करूँगा वह कवर करेगा। –

संबंधित मुद्दे