2013-02-27 190 views
6

के साथ डिफ़ॉल्ट डेटाटाइम स्ट्रिंग प्रारूप मैं JSON webservice के साथ डिफ़ॉल्ट पायथन डेटाटाइम स्ट्रिंग प्रारूप का उपयोग कर रहा हूं।टाइमज़ोन

फिर, मैं इसे वास्तविक डेटाटाइम से तुलना करने की कोशिश कर रहा हूं। और मैं pytz.utc के साथ टाइमज़ोन का भी उपयोग कर रहा हूं।

print date 
2013-02-26 21:28:37.261134+01:00 

(pytz साथ समय क्षेत्र के लिए संपादित) एक datetime में मेरी स्ट्रिंग परिवर्तित करने के लिए कोशिश कर रहा है:

if datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f+%Z') < datetime.now(pytz.utc): 

दुर्भाग्य से, यह काम नहीं करता

यहाँ मेरी स्ट्रिंग तारीख है।

ValueError: time data '2013-02-26 21:28:37.261134+01:00' does not match format '%Y-%m-%d %H:%M:%S.%f%Z' 

किसी को भी मुझे strptime प्रारूप के लिए सही सिंटैक्स बता सकते हैं, मेरे तिथि उपयोग करने के लिए?

+0

आप 'datetime.now()' के साथ जागरूक टाइमज़ोन की तुलना नहीं कर सकते हैं, हालांकि, आपको बाद वाले को टाइमज़ोन देना होगा। देखें [पायथन में एक अनजान डेटाटाइम टाइमज़ोन कैसे जागरूक करें] (http://stackoverflow.com/q/7065164) –

+0

आप डुप्लिकेट के बारे में सही हैं, धन्यवाद। Google ने मुझे कुछ भी नहीं दिया ... टाइमज़ोन के लिए, मैं वास्तव में अपने कोड में 'datetime.now (pytz.utc) 'का उपयोग कर रहा था। भ्रामक के लिए खेद है .... – Arthur

उत्तर

3

असल में ऐसा इसलिए है क्योंकि डेटाटाइम मॉड्यूल उपलब्ध समय क्षेत्र के बारे में समय से पहले नहीं जानता है। यह लंगड़ा है।

मैं dateutil का उपयोग करने की सलाह देता हूं। यह एक तृतीय पक्ष पैकेज है, लेकिन यह आपके स्ट्रिंग को दरवाजे से बाहर कर देता है।

>>> import dateutil.parser 
>>> dateutil.parser.parse('2013-02-26 21:28:37.261134+01:00')                                                     
datetime.datetime(2013, 2, 26, 21, 28, 37, 261134, tzinfo=tzoffset(None, 3600))