2012-07-14 14 views
5

Mi zona horaria es UTC + 5.datetime y timedelta

Así que cuando hago datetime.datetime.now() que da:

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

quería restar 5 horas de modo que se hace igual a datetime.datetime.utcnow() así lo hice:

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 
""" 

¿Ves en lugar de restar 5 horas agrega 5 horas en datetime? ¿Estoy haciendo algo mal aquí?

+0

Intenta cambiar el '-' a un' + ' – inspectorG4dget

+0

Sí, ¿la pregunta cuando la uso + en realidad resta, es por eso que estoy confundido? –

Respuesta

5

Está creando un timedelta negativo. El valor de time.timezone es negativo:

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

Aquí, estoy en GMT + 10, por lo que su código se convierte en:

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

Gracias, no me di cuenta de que time.timezone me devuelve el valor negativo. –

5

The documentation es clara:

time.timezone El desplazamiento de la zona horaria local (que no es DST), en segundos al oeste de UTC (negativo en la mayoría de Europa occidental, positivo en los EE. UU., Cero en el Reino Unido).

Así que los valores UTC positivos tienen una zona horaria negativa.

Cuestiones relacionadas