Le fuseau horaire de Java est foiré

J'exécute une application Tomcat et j'ai besoin d'afficher des valeurs de temps. Malheureusement, le temps approche d'une heure. Je l'ai examiné et j'ai découvert que mon fuseau horaire par défaut était défini sur :

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

Plutôt que le fuseau horaire du Pacifique. Ceci est en outre indiqué lorsque j'essaie d'imprimer le

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

Ce fichier doit contenir vos règles d'heure d'été, comme celle-ci pour l'année 2080 :

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

Vous pouvez comparer cela avec les règles de fuseau horaire que vous pensez devoir utiliser. Ils peuvent être trouvés dans /usr/share/zoneinfo/.

请先 登录 后评论
abarax

J'ai eu un problème similaire, peut-être le même. Cependant, mon serveur Tomcat fonctionne sur une boîte Windows, donc la solution de lien symbolique ne fonctionnera pas.

J'ai défini -Duser.timezone=Australia/Sydney dans le JAVA_OPTS mais tomcat ne reconnaîtrait pas que l'heure d'été était en vigueur. Pour contourner le problème, j'ai changé Australia/Sydney (GMT 10:00) en Pacific/Numea (GMT 11:00) afin que les heures s'affichent correctement, mais j'aimerais connaître la solution réelle ou bogue, le cas échéant.

请先 登录 后评论
  • 24 abonnés
  • 0 favoris,267 Feuilleter
  • Mike Stone posée à 2023-03-27 16:49