Datetime and timedelta

My time zone 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 5hours from it so that it became equal 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, does it add 5 hours to datetime ?? Am I something wrong here?

+5
source share
2 answers

You create a negative timedelta. The value is time.timezonenegative:

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

Here I am in UTC + 10, so your code will look like this:

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

The documentation is clear:

time.timezone (-DST) , UTC ( , , ).

, UTC .

+5

All Articles