2012-07-05 21 views
5

L'output delle uscite datetime.datetime.now() nel fuso orario nativo di UTC-8. Mi piacerebbe convertirlo in un timestamp appropriato con un tzinfo di UTC.NameError: nome 'UTC' non definito

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

^uscite NameError: nome 'UTC' non è definita

x.replace(tzinfo=<UTC>) uscite SyntaxError: invalid syntax

x.replace(tzinfo='UTC') uscite TypeError: tzinfo argomento deve essere None o di una classe derivata di tzinfo, non digitare ' str '

Qual è la sintassi corretta da utilizzare per realizzare il mio esempio?

+1

librerie standard di Python non includono alcun tzinfo classi, compreso UTC. La documentazione include le istruzioni per crearne una. –

risposta

8

È necessario utilizzare una libreria aggiuntiva come pytz. Il modulo datetime di Python non include alcuna classe tzinfo, compresa l'ora UTC, e certamente non il fuso orario locale.

+1

+1 Queste batterie non sono incluse :( –

+1

Grazie! Per chi è curioso, ho finito con l'uso di 'x.replace (tzinfo = pytz.utc) + timedelta (ore = 8)' –

3

Se tutto quello che stai cercando è il tempo in UTC, datetime ha un incorporato per questo:

x = datetime.utcnow() 

Purtroppo non include alcun tzinfo, ma ti dà il tempo UTC.

In alternativa, se avete bisogno del tzinfo si può fare questo:

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

Si può anche essere interessati a un elenco dei fusi orari: Python - Pytz - List of Timezones?

Problemi correlati