2012-07-14 12 views
5

मेरा टाइमज़ोन यूटीसी +5 है।डेटाटाइम और टाइमडेल्टा

तो जब मैं datetime.datetime.now करना() यह देता है:

2012-07-14 06:11:47.318000 
#note its 6AM 

मैं इसे से 5 घंटे घटाना इतना है कि यह datetime.datetime.utcnow() के बराबर हो जाता है चाहता था इसलिए मैंने किया:

import time 
from datetime import datetime, timedelta 
dt = datetime.now() - timedelta(hours=time.timezone/60/60) 
print dt 
#gives 2012-07-14 11:11:47.319000 

""" 
Here 11 is not the PM its AM i double check it by doing 
print dt.strftime('%H:%M:%S %p') 
#gives 11:11:47 AM 
""" 

आप 5 घंटे घटाने के बजाए देखते हैं, यह डेटाटाइम में 5 घंटे जोड़ता है ?? क्या मैं यहां कुछ गलत कर रहा हूं?

+0

'-' को' + ' – inspectorG4dget

+0

में बदलने का प्रयास करें हां, जब मैं इसका उपयोग करता हूं तो सवाल वास्तव में घटाता है, इसलिए मैं उलझन में हूं ?? –

उत्तर

5

आप एक नकारात्मक timedelta बना रहे हैं। , यहाँ

>>> import time 
>>> time.timezone 
-36000 

मैं UTC + 10 में हूँ, इसलिए आपके कोड हो जाता है:: time.timezone का मान ऋणात्मक है

>>> from datetime import timedelta 
>>> print timedelta(hours=time.timezone/60/60) 
-1 day, 14:00:00 
+0

धन्यवाद मैंने देखा नहीं कि समय। टाइमज़ोन मुझे नकारात्मक मूल्य लौटा रहा है। –

5

The documentation स्पष्ट है:

time.timezone यूटीसी के पश्चिम में सेकंड (स्थानीय यूरोप में नकारात्मक, अमेरिका में सकारात्मक, ब्रिटेन में शून्य) में स्थानीय (गैर-डीएसटी) टाइमज़ोन का ऑफ़सेट।

तो सकारात्मक यूटीसी मूल्यों का ऋणात्मक समय क्षेत्र होता है।

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