2014-09-14 6 views
19

अभी मैंअजगर सही समय क्षेत्र में वर्तमान समय मिलता

import datetime 
print(datetime.datetime.now().strftime("%X")) 

का उपयोग एक स्ट्रिंग के रूप में वर्तमान समय प्रदर्शित करने के लिए।
समस्या यह है कि, मेरा कंप्यूटर Europe/Berlin समय क्षेत्र में चल रहा है, और +2 से यूटीसी का ऑफसेट यहां नहीं है। 19:22:26 के बजाय यह, 21:22:26 इसके अलावा अन्य उत्तर मैं यहां पाया करने के लिए विभिन्न प्रदर्शित करना चाहिए मैं इसे एकत्र नहीं करते

datetime.datetime(2014, 7, 10, 18, 44, 59, 193982, tzinfo=<UTC>) 

लेकिन

datetime.datetime.now() 

फोन करके तो मैं करने की कोशिश की (और असफल) निम्नलिखित :

>>> from pytz import timezone 
>>> datetime.datetime.now().astimezone(timezone('Europe/Berlin')) 
ValueError: astimezone() cannot be applied to a naive datetime 
+0

यह बहुत अच्छा है! – luckydonald

+0

क्या आप इसका उत्तर देना चाहते हैं, तो मैं स्वीकार कर सकता हूं? – luckydonald

+0

निश्चित रूप से, किसी और के लिए उपयोगी हो सकता है –

उत्तर

41

स्थानीय समय क्षेत्र में वर्तमान समय को निष्क्रिय समय के रूप में प्राप्त करने के लिए:

from datetime import datetime 
naive_dt = datetime.now() 

यदि यह अपेक्षित समय वापस नहीं करता है तो इसका मतलब है कि आपका कंप्यूटर गलत कॉन्फ़िगर किया गया है। आपको इसे पहले ठीक करना चाहिए (यह पायथन से असंबंधित नहीं है)।

एक अनुभवहीन datetime वस्तु के रूप में यूटीसी में वर्तमान समय प्राप्त करने के लिए:

from datetime import datetime, timezone 

utc_dt = datetime.now(timezone.utc) # UTC time 
dt = utc_dt.astimezone() # local time 

वर्तमान पाने के लिए:

naive_utc_dt = datetime.utcnow() 

पायथन में एक जागरूक datetime वस्तु 3.3+ के रूप में वर्तमान समय प्राप्त करने के लिए tz डेटाबेस से दिए गए समय क्षेत्र में समय:

import pytz 

tz = pytz.timezone('Europe/Berlin') 
berlin_now = datetime.now(tz) 

यह डीएसटी संक्रमण के दौरान काम करता है। यह काम करता है अगर टाइमज़ोन के पास अतीत में अलग-अलग यूटीसी ऑफसेट था, यह तब भी काम करता है जब टाइमज़ोन अलग-अलग समय में एकाधिक tzinfo ऑब्जेक्ट्स से मेल खाता हो।

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