2012-07-05 15 views
5

La salida de datetime.datetime.now() salidas en mi zona horaria nativa de UTC-8. Me gustaría convertir eso en una marca de tiempo apropiada con un tzinfo de UTC.NameError: nombre 'UTC' no está definido

from datetime import datetime, tzinfo 
x = datetime.now() 
x = x.replace(tzinfo=UTC) 

^salidas NameError: nombre 'UTC' no está definido

x.replace(tzinfo=<UTC>) salidas SyntaxError: sintaxis no válida

x.replace(tzinfo='UTC') salidas TypeError: tzinfo argumento debe ser None o de una subclase tzinfo, no de tipo ' str '

¿Cuál es la sintaxis correcta para usar para llevar a cabo mi ejemplo?

+1

bibliotecas estándar de Python no incluyen ninguna tzinfo clases, incluyendo UTC. La documentación incluye instrucciones para crear uno. –

Respuesta

8

Tendrá que utilizar una biblioteca adicional como pytz. El módulo datetime de Python no incluye ninguna clase tzinfo, incluido UTC, y ciertamente no es su zona horaria local.

+1

+1 Estas baterías no están incluidas :( –

+1

Gracias! Para los curiosos, terminaron usando 'x.replace (tzinfo = pytz.utc) + timedelta (hours = 8)' –

3

Si todo lo que está buscando es el tiempo en UTC, fecha y hora tiene una orden interna para eso:

x = datetime.utcnow() 

Por desgracia, no incluye ninguna tzinfo, pero sí le dará el tiempo UTC.

Alternativamente, si usted no necesita la tzinfo usted puede hacer esto:

from datetime import datetime 
import pytz 
x = datetime.now(tz=pytz.timezone('UTC')) 

También puede estar interesado en una lista de las zonas horarias: Python - Pytz - List of Timezones?

Cuestiones relacionadas