2015-02-28 18 views
8

La mia applicazione è stata implementata in un vps Debian negli Stati Uniti, a Los Angeles. Quindi il codice come new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) restituirà l'ora corrente di America/Los Angeles.Come modificare il fuso orario del server di Tomcat 7?

Posso fare qualche impostazione nel file di configurazione di Tomcat (server.xml o catalina.sh o cosa?) In modo che ottenere il tempo corrente restituirà un fuso orario specificato come GMT + 8 o Asia/Taipei ???

+0

possibile duplicato di [Cambia fuso orario in Tomcat] (http://stackoverflow.com/questions/12112188/change-timezone-in-tomcat) –

risposta

11

Con tutti i diversi luoghi in cui è possibile impostare i fusi orari, è (in generale) sempre meglio impostare in modo esplicito il fuso orario quando si ha a che fare con i tempi. Sì, il tuo server è a Los Angeles, ma dove sono i tuoi utenti?

Trattandosi esplicitamente di fusi orari, la tua applicazione è un po 'più complessa (ma anche più corretta, meno sorprendente, più difficile da testare) la cosa migliore sarebbe fare in modo esplicito a tomcat (java) quale fuso orario è impostato sul tuo orologio server. Attento: ci sono alcuni livelli per impostarlo: imposta il tuo orologio server su UTC, configura il tuo server OS come PST e poi fai sapere a java il fuso orario su cui è acceso il tuo server, ad es. in setenv.sh do CATALINA_OPTS="$CATALINA_OPTS -Duser.timezone=America/Los_Angeles" (o qualunque sia il fuso orario) per configurare Java per il fuso orario.

Test, risciacquo, ripetere finché non si è soddisfatti della configurazione. Ma rendi una scelta esplicita su tutti i diversi livelli su cui puoi mettere le mani. Risolvere il fuso orario è piuttosto un java che una funzionalità di tomcat.

È molto importante per la manutenibilità del software per sempre volte in UTC. Se si memorizza nel fuso orario locale, calcolare un altro fuso orario sarà un disastro - pensa all'ora legale, al cambio di fuso orario di diverse aree del mondo ecc.

Quindi: imposta il tuo server su UTC, quindi ottieni l'attuale tempo, controlla se è corretto. A scopo di visualizzazione, è possibile utilizzare il fuso orario locale (dell'utente) (ad esempio PST), ma per la memorizzazione e il calcolo, l'UTC è altamente raccomandato.

+0

Penso che gli utenti (provenienti da tutto il mondo) devono ottenere il tempo di il proprio fuso orario, ad esempio pubblichi un tweet su Twitter e vedrai che egli pubblica il tempo nella timeline è proprio ora nel tuo fuso orario, non importa da dove vieni, quindi il tuo suggerimento è ... –

+0

sì - è per questo che ho chiesto dove i tuoi utenti lo sono. È meglio gestire sempre il fuso orario in modo esplicito. Memorizza i tempi solo in UTC, * mai * in qualsiasi altro fuso orario. Lo renderò più chiaro nella risposta. –

+1

Usa 'America/Los_Angeles'. Non 'PST'. –

11

fuso orario personale di Tomcat verrebbe specificato nel suo script di avvio in una forma come:

-Duser.timezone=GMT 
+0

questo lavoro è qui! –

0

per Windows - Vai catalina.bat e aggiungere proprietà CATALINA_OPTS (in Start).

: doStart spostamento set CATALINA_OPTS = -Duser.timezone = America/Denver

1

Se si vuole cambiare da Eclipse ... Esegui -> Configurazione Esegui -> Apache Tomcat -> Tomcat Server -> Argomenti VM add -Duser.timezone = America/Montreal

1

In Linux, aggiungere la seguente riga in setenv.sh che corrisponde a CATALINA_HOME/bin/. CATALINA_OPTS="-Duser.timezone=Asia/{your zone}"

Problemi correlati