2012-02-15 15 views
5

In un'applicazione Python ho bisogno di sapere il giorno corrente. datetime.date.today() funziona bene. Il problema è che quando installo il programma sul mio server situato negli Stati Uniti, la mia base di utenti (che è italiano) viene presentata una data che potrebbe non essere quella corretta (poiché il server è a 6 fusi orari di distanza).Fusi orari in Python

Come è possibile creare un oggetto data in python in base a un fuso orario specifico? Grazie

+0

[ 'pytz'] (http://pytz.sourceforge.net/) è tuo amico. – Amber

risposta

4

Tutti sono d'accordo sul fatto che UTC è meraviglioso ma che non aiuta molto se lo datetime.date.today() viene eseguito negli Stati Uniti senza un fuso orario. Se la base di utenti è in Italia e che è la data che si desidera mostrare ...

import datetime 
import pytz 

IT = pytz.timezone('Europe/Rome') 
oggi = datetime.now(IT).date() 
-2

accedere alla classe, creare un'istanza, impostare il proprio tempo, accedere a quell'oggetto ogni volta che si desidera il tempo.

+0

L'ho già fatto in questo modo e funziona! È bello perché puoi impostare ogni volta che vuoi e il programma ne terrà traccia. Suppongo che anche pytz lavori. –

+0

Non capisco cosa stai dicendo. Puoi elaborare? –

5

Normalmente, un'applicazione server eseguirà tutte le operazioni di memorizzazione e calcoli in UTC. Anche i tempi verrebbero trasmessi al cliente in UTC. Quindi, si effettua la conversione in ora locale sul lato del client (in Javascript, se si tratta di un'applicazione Web). È molto difficile per un server ottenere il fuso orario giusto per ogni client, perché il server semplicemente non ha tutte le informazioni.

Anche se l'applicazione è mirata specificamente agli utenti italiani, è noto che viaggiano in altri fusi orari.

+0

+1 È un'idea molto migliore usare un buon standard (come l'UTC) e convertirlo sul lato client. –