Fuseau horaire Java en turquie (heure d'été rejetée)


La Turquie a décidé récemment (le 6 septembre 2016 ) de rester en permanence à Heure d'été (DST) . Cet acte a annulé la fin de l'heure d'été précédemment prévue pour octobre 30, 2016, 04:00:00. Les horloges n'ont pas changé.

La Turquie est entre +2 and +3 utc, alors maintenant elle restera dans +3. Ici vous pouvez voir

Https://www.timeanddate.com/time/change/turkey/ankara?year=2016

And et dans la page Wikipedia, Temps en Turquie, et ce Hurriyet Tous les jours Article de nouvelles, La Turquie va mettre en œuvre l'heure d'été toute l'année.

Ici, ils discutent mais j'ai une application dans Spring Boot.

Android Fuseau horaire Turquie GMT

cmntWrapper.setCreatedAtString(cmnt.getCreatedAt().
now(ZoneId.of(Constants.TURKEY_ZONE)).
format(DateTimeFormatter.ofPattern(Constants.DATE_TIME_FORMAT)));

Voici comment je prends mon rendez-vous.

Ce qui montre l'heure 13.50 maintenant, mais maintenant, il est 14.50. Parce que nous sommes en +3.

Que puis-je faire?

Je ne veux pas utiliser utc + 3 parce qu'ils peuvent dire l'année prochaine, " permet à nouveau d'utiliser pour +2-+3 passage à l'heure d'été concept". Donc je ne peux pas le risque.

Je ne peux pas changer de code dans les semaines à venir, il restera permanent après quelques semaines.

Que suggérez-vous pour permanente?

Et aussi comment puis-je faire java? parce que pour ma machine linux de test, voir ceci s'il vous plait

Puapp@PU-APP-01:~$ java version Le programme 'java' se trouve dans les paquets suivants: * default-jre * gcj-4.8-jre-sans tête * openjdk-7-jre-sans tête * gcj-4.6-jre-sans tête * openjdk-6-jre-sans tête Essayez: sudo apt-get install puapp@PU-APP-01:~$

Puapp@PU-APP-01: ~ where où est java java: /usr/share/java puapp@PU-APP-01:~$

Puapp@PU-APP-01: ~ where où est java java: /usr/share/java

Mais en local, j'ai java.

Végétalien@végétalien:~$ java -version version java " 1.8.0_111" Environnement d'exécution Java(TM) SE (build 1.8.0_111-b14) Java HotSpot (TM) machine virtuelle serveur 64 bits (build 25.111-b14, mode mixte) vegan@végétalien:~$

Mais local n'est pas important. ce serveur linux est immportant.

Et pour notre machine principale, il y a java

produp@Produp-app-01:~$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
produp@Produp-app-01:~$ 
Author: Community, 2016-11-03

2 answers

La façon préférée de le faire serait de mettre à jour le JDK/JRE, s'il inclut les nouvelles informations de fuseau horaire. S'il n'est pas inclus, la manière correcte et officielle de le faire devrait être de mettre à jour les informations du fuseau horaire à l'aide de l'outil Timezone Updater.

L'outil TZUpdater est fourni pour vous permettre de mettre à jour les logiciels Java Development Kit (JDK) et Java Runtime Environment (JRE) installés avec des données de fuseau horaire plus récentes, pour tenir compte de l'heure d'été (DST) changements dans différents pays. Oracle s'appuie sur les données de fuseau horaire accessibles au public via la base de données de fuseau horaire de l'IANA.

Oracle vous recommande d'utiliser la dernière version Oracle Java SE platform JDK ou JRE update comme moyen privilégié de fournir à la fois des mises à jour de données de fuseau horaire et d'autres améliorations de produits, telles que des correctifs de sécurité. Pour voir quelle version de mise à jour JDK ou JRE incorpore les données de fuseau horaire mises à jour pour vos paramètres régionaux, consultez Versions de données de fuseau horaire dans le logiciel JRE. Toutefois, si vous ne pouvez pas utiliser la dernière version JDK ou JRE update d'Oracle ou si les données de fuseau horaire de la dernière version ne sont pas les plus récentes disponibles, l'outil TZUpdater fournit un moyen de mettre à jour les données de fuseau horaire tout en laissant inchangées les autres configurations et dépendances du système.

Il est disponible en téléchargement sur le site officiel de téléchargement de Java SE (sous la section Ressources supplémentaires).

Les informations sur votre cas particulier peuvent être trouvé ici (où vous pouvez également voir que les informations ne sont pas disponibles dans une version JRE):

La Turquie est passée de l'EET/EEST (+02/+03) à permanent +03, à compter du 2016-09-07. Nouveau saut deuxième 2016-12-31 23: 59: 60 UTC selon I Bulletin C 52.

Comment utiliser l'outil est expliqué dans le doucentation:

L'outil TZUpdater modifie l'instance logicielle JDK/JRE utilisée pour exécuter l'outil. Une seule image du logiciel JDK/JRE est modifié par exécution. Pour administrer l'outil à plusieurs instances du logiciel JDK/JRE, reportez-vous à la section Utilisation à l'échelle du système.

Par exemple, la commande ci-dessous mettrait à jour le JRE avec les dernières informations, où les changements dans l'heure d'été de la Turquie devraient être inclus.

Java-jar tzupdater.jar-l http://www.iana.org/time-zones/repository/tzdata-latest.tar.gz


Notez qu'il existe un problème courant connu depuis le 2016g communiqué de:

En raison de changements de formatage dans le bundle tzdata maintenu par l'IANA, l'outil TZUpdater ne parvient pas à déterminer la version tzdata lors de l'analyse du tzdata2016.tar.ensemble de ressources gz.

Suivez les étapes du lien ci-dessous afin de pouvoir utiliser le dernier paquet tzdata de l'IANA. Lorsque cela est corrigé, cette section de la réponse sera supprimée.

 5
Author: Magnilex, 2016-11-03 22:59:50

La réponsede Magnilex est correcte et devrait être acceptée. Toute personne concernée par le temps en Turquie doit immédiatement mettre à jour sa base de données tz fournie avec Java.

Version tzdata2016g deles fichiers de données de fuseau horaire a le changement pour la Turquie que vous avez besoin.

La Turquie est passée de l'EET/EEST (+02/+03) à permanent +03, à compter du 2016-09-07.

Et la version tzdata2016h a quelques corrections de la Turquie dans les années 1980 et 1990.

En Turquie, les transitions de 1986 à 1990 ont eu lieu à 01h00 heure normale et non à 02h00, et la transition du printemps 1994 a eu lieu le 20 mars et non le 27 mars.

Mais les mises à jour 111 et 112 actuelles de Java SE 8 ont la version antérieure tzdata2016f.

tz non mis à jour à partir de Java 8 Update 111

Mon expérience ci-dessous montre que ce changement de fuseau horaire de dernière minute par le gouvernement turc n'était pas inclus dans la base de données tz fournie avec la mise à jour la plus récente de Java à partir d'Oracle, Java 8 Mise à jour 111.

Obtenez le premier moment le jour où l'heure d'été devait se terminer. Ajoutez ensuite une heure à la fois pour voir si l'horloge saute ou non.

System.out.println ( "java.version: " + System.getProperty ( "java.version" ) );

ZoneId z = ZoneId.of ( "Europe/Istanbul" );
ZonedDateTime zdt = ZonedDateTime.of ( 2016 , 10 , 30 , 0 , 0 , 0 , 0 , z );

System.out.println ( "    zdt: " + zdt );
System.out.println ( "zdt + 1: " + zdt.plusHours ( 1 ) );
System.out.println ( "zdt + 2: " + zdt.plusHours ( 2 ) );
System.out.println ( "zdt + 3: " + zdt.plusHours ( 3 ) );
System.out.println ( "zdt + 4: " + zdt.plusHours ( 4 ) );
System.out.println ( "zdt + 5: " + zdt.plusHours ( 5 ) );
System.out.println ( "zdt + 6: " + zdt.plusHours ( 6 ) );

Lors de l'exécution. À 4 heures du matin, l'horloge revient en arrière pour répéter l'heure 03:00. Cela signifiait la fin de l'heure d'été, mais n'aurait pas dû si nous étions à jour avec la nouvelle loi turque.

java.version: 1.8.0_111
    zdt: 2016-10-30T00:00+03:00[Europe/Istanbul]
zdt + 1: 2016-10-30T01:00+03:00[Europe/Istanbul]
zdt + 2: 2016-10-30T02:00+03:00[Europe/Istanbul]
zdt + 3: 2016-10-30T03:00+03:00[Europe/Istanbul]
zdt + 4: 2016-10-30T03:00+02:00[Europe/Istanbul]
zdt + 5: 2016-10-30T04:00+02:00[Europe/Istanbul]
zdt + 6: 2016-10-30T05:00+02:00[Europe/Istanbul]
 2
Author: Basil Bourque, 2017-05-23 12:07:08