2012-07-14 9 views
5

私のタイムゾーンはUTC + 5です。私はdatetime.datetime.nowを行う際datetimeとtimedelta

だから()それは与える:

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

私はそれがdatetime.datetime.utcnow()に等しくなるように、それから5時間を減算したかったので、私はやった:

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時間をdatetimeに加えます。 私はここで何か間違っていますか?

+0

'-'を' + 'に変更してみてください – inspectorG4dget

+0

はい、私が+実際にそれを減算すると、なぜ私は混乱しているのですか? –

答えて

5

負のタイムゾーンを作成しています。 time.timezoneの値が負である:

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

ここで、あなたのコードになるので、私は、UTC + 10にいる:

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

ありがとう私はtime.timezoneが私に負の値を返すことに気付かなかった。 –

5

The documentationが明確である:

time.timezone UTCの西から西(西ヨーロッパのほとんどで負、米国では負、英国ではゼロ)のローカル(非DST)タイムゾーンのオフセットです。

したがって、正のUTC値には負のタイムゾーンがあります。

関連する問題