Reputation: 39659
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?
Upvotes: 9
Views: 47554
Reputation: 251383
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.
Upvotes: 5
Reputation: 67063
You're creating a negative timedelta. The value of time.timezone
is negative:
>>> import time
>>> time.timezone
-36000
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
Upvotes: 11