Take the 2-minute tour ×

My timezone is UTC+5.

So when i do datetime.datetime.now() it gives:

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

I wanted to subtract 5 hours from it so that it becomes equal to datetime.datetime.utcnow() so i did:

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

You see instead of subtracting 5 hours it adds 5 hours into datetime?? Am I doing something wrong here?

share|improve this question
Try changing the - to a + –  inspectorG4dget Jul 14 '12 at 1:22
Yes that the question when i use + it actually subtracts, that is why i am confused?? –  Aamir Adnan Jul 14 '12 at 1:22

2 Answers 2

up vote 3 down vote accepted

You're creating a negative timedelta. The value of time.timezone is negative:

>>> import time
>>> time.timezone

Here, I'm in UTC + 10, so your code becomes:

>>> from datetime import timedelta
>>> print timedelta(hours=time.timezone/60/60)
-1 day, 14:00:00
share|improve this answer
Thanks i didn't noticed that the time.timezone is returning me the negative value. –  Aamir Adnan Jul 14 '12 at 1:37

The documentation is clear:

time.timezone The offset of the local (non-DST) timezone, in seconds west of UTC (negative in most of Western Europe, positive in the US, zero in the UK).

So positive UTC values have a negative timezone.

share|improve this answer

Your Answer


