2010-11-01 16 views
11

Sto riscontrando il momento più difficile per ottenere l'ora corrente nel fuso orario EDT.Python - Data/ora di un fuso orario specifico

print datetime.time(datetime.now()).strftime("%H%M%S") 

datetime.now ([tz]) ha un argomento tz facoltativa, ma deve essere di tipo datetime.tzinfo ... non ho ben in grado di capire come definire un oggetto tzinfo per Eastern fuso orario ... Sembra che dovrebbe essere abbastanza semplice, ma non riesco a capirlo senza importare una libreria aggiuntiva.

risposta

20

Non sono molto esperto del fuso orario EDT, ma questo esempio dovrebbe servire al tuo scopo.

import datetime 

datetime.datetime.now devono essere passate le informazioni sul fuso orario che dovrebbero essere di tipo datetime.tzinfo. Ecco una classe che implementa quella con alcune delle funzioni richieste. Non sto fornendo dettagli di risparmio luce giorno qui come questo è un esempio.

class EST(datetime.tzinfo): 
    def utcoffset(self, dt): 
     return datetime.timedelta(hours=-5) 

    def dst(self, dt): 
     return datetime.timedelta(0) 

Ora si potrebbe usare questo per avere le informazioni con il fuso orario correttezza:

print datetime.datetime.now(EST()) 

uscita:

2010-11-01 13:44:20.231259-05:00 
+0

grazie - frustrante è necessario creare un'intera classe per specificare un fuso orario (vs passando semplicemente una variabile semplice) – wuntee

+0

@ wuntee: non è vero. Questo era inteso come una spiegazione. La risposta di adw contiene la libreria - pytz che può essere utilizzata per passare informazioni tzinfo. È un fatto che potrebbe essere riutilizzato e aspetti come dst ecc sono già forniti dal modulo pytz. – pyfunc

8

La classe tzinfo solo definisce un'interfaccia, sarà necessario implementare da solo (consultare la documentazione per un esempio) o utilizzare un modulo di terze parti che lo implementa, ad esempio pytz.

Modifica: Mi dispiace, mi è mancato che tu non voglia importare un'altra libreria.

+0

+1 per fornire il modulo pytz poiché mi sono concentrato sulla spiegazione di tzinfo. – pyfunc