Domanda

Io sono in esecuzione di una delle applicazioni Tomcat, e ho bisogno di visualizzare alcuni valori di tempo.Purtroppo il tempo è in arrivo un'ora.Ho guardato dentro e ho scoperto che il mio Fuso orario predefinito è impostato su:

sun.util.calendar.ZoneInfo[id="GMT-08:00",
                           offset=-28800000,
                           dstSavings=0,
                           useDaylight=false,
                           transitions=0,
                           lastRule=null]

Piuttosto che il fuso orario del Pacifico.Questo è indicato quando si tenta di stampare il fuso orario predefinito del nome visualizzato, e si tratta di "GMT-08:00", che sembra indicare, per me, che non è correttamente impostato a NOI fuso orario del Pacifico.Io sono in esecuzione su Ubuntu Hardy Heron, aggiornato da Gutsy Gibbon.

C'è un file di configurazione posso aggiornare a dire il JRE per l'uso Pacifico con tutti gli associati dell'ora legale informazioni?Il tempo sulla mia macchina è visualizzato correttamente, in modo che non sembra essere un OS ampia errore di configurazione.


Ok, ecco un aggiornamento.Un collega mi ha suggerito di aggiornare JAVA_OPTS nel mio /etc/profile per includere "-Duser.fuso orario=US/Pacifico", che ha funzionato (ho visto anche CATALINA_OPTS, che ho aggiornato).In realtà, ho esportato il cambiamento nelle variabili piuttosto che utilizzare il nuovo /etc/profile (un riavvio, poi raccoglie le modifiche e mi sarà d'oro).

Tuttavia, ritengo comunque che c'è una soluzione migliore...ci dovrebbe essere una configurazione per Java da qualche parte che dice che fuso orario è in uso, o di come si è afferrando il fuso orario.Se qualcuno sa di una tale impostazione, sarebbe fantastico, ma per ora questa è una buona soluzione.


Sto usando la 1.5, ed è sicuramente un DST problema.Come si può vedere, il fuso orario è impostato per non utilizzare l'ora legale.La mia convinzione è che è genericamente insieme a -8 offset piuttosto che la specifica Pacifico fuso orario.Dal momento che il generico -8 offset non ha ora legale info, ovviamente non è in uso, ma la domanda è, dove posso dire di Java per l'utilizzo fuso orario Pacifico quando inizia?Io NON sto cercando una soluzione a livello di programmazione, dovrebbe essere una configurazione di soluzione.

È stato utile?

Soluzione

È una "peculiarità" nel modo in cui la JVM cerca il zoneinfo file.Vedere ID Bug 6456628.

La soluzione più semplice è quello di fare /etc/localtime un link simbolico per la corretta zoneinfo file.Per Pacifico, i seguenti comandi dovrebbe funzionare:

# sudo cp /etc/localtime /etc/localtime.dist
# sudo ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Non ho avuto problemi con il collegamento simbolico approccio.

Edit:Aggiunto il comando "sudo" per i comandi.

Altri suggerimenti

Su Ubuntu, non è sufficiente cambiare il le /etc/localtime file.Sembra di leggere file /etc/timezone, troppo.È meglio seguire il istruzione per impostare il fuso orario corretto.In particolare, effettuare le seguenti operazioni:

$ sudo cp /etc/timezone /etc/timezone.dist
$ echo "Australia/Adelaide" | sudo tee /etc/timezone
Australia/Adelaide
$ sudo dpkg-reconfigure --frontend noninteractive tzdata

Current default time zone: 'Australia/Adelaide'
Local time is now:      Sat May  8 21:19:24 CST 2010.
Universal Time is now:  Sat May  8 11:49:24 UTC 2010.

Sul mio Ubuntu, se /etc/localtime e /etc/timezone sono incoerenti, Java sembra di leggere fuso orario predefinito da /etc/timezone .

Ho avuto un problema analogo, possibilmente lo stesso.Tuttavia il mio tomcat server viene eseguito su una macchina windows in modo che il link simbolico soluzione non funziona.

Ho impostato -Duser.timezone=Australia/Sydney nel JAVA_OPTS tuttavia tomcat non riconoscere che l'ora legale è in vigore.Come soluzione ho cambiato Australia/Sydney (GMT+10:00) per Pacific/Numea (GMT+11:00) in modo che, in tempi di visualizzare correttamente però mi piacerebbe sapere la vera soluzione o un bug, se qualsiasi.

Può aiutare a controllare il fuso orario regole il sistema operativo che si sta utilizzando.

/usr/bin/zdump -v /etc/localtime | less

Questo file deve contenere il vostro legale di regole che, come questa, per l'anno 2080:

/etc/localtime  Sun Mar 31 01:00:00 2080 UTC = Sun Mar 31 02:00:00 2080 BST isdst=1 gmtoff=3600

È possibile confrontare questo con il fuso orario regole si pensa si dovrebbe essere utilizzando.Essi possono essere trovati in /usr/share/zoneinfo/.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top