timedatectl et Java TimeZone

Publié dans Cho Hisabi. J'étais tellement surpris et irrité.

Découvert lors de la migration d'un système Java d'Amazon Linux vers Amazon Linux 2.

Dans Amazon Linux 2, exécutez la commande suivante pour définir le fuseau horaire du système.

#timedatectl set-timezone "Asia/Tokyo"

Normalement, tout devrait être OK, et même si vous recherchez sur le net, seul Cocomade est écrit dans les articles des séries Amazon Linux 2 et CentOS 7.

Cependant, TimeZone ne peut pas être acquis correctement dans le programme Java et devient UTC.

échantillon:

TimeZoneInfo.java


import java.util.Calendar;
class TimeZoneInfo {
  public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    System.out.println(cal.getTimeZone());
    System.out.println(System.getProperty("user.timezone"));
  }
}

Résultat de l'exécution:

sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
UTC

Il y a plusieurs façons de le gérer (Il a fallu beaucoup de temps pour le trouver)

  1. Définissez la variable d'environnement TZ = Asia / Tokyo
  2. Ajoutez -Duser.timezone = Asia / Tokyo``` à la ligne de commande java
  3. Modifiez / etc / sysconfig / clock```, qui était la méthode de réglage standard à l'époque d'Amazon Linux.

etc. Je pense qu'il y a des problèmes.

--timedatectl réécrira / etc / localtime, mais pas `` `` / etc / sysconfig / clock. (En premier lieu, il semble qu'il n'y ait pas de fichier lui-même dans CentOS 7 ...) --Java ne regarde pas / etc / localtime```. Il semble que cela dépend de la version. Cela peut être un changement dans le comportement de la glibc, mais la cause détaillée est inconnue. --Depuis qu'il est devenu un système systemd, / etc / sysconfig n'est pas souvent mentionné, mais l'héritage du passé demeure, alors veuillez considérer un peu plus la compatibilité. .. .. ..

Quelle est la méthode de réponse la plus correcte (ou devrait être)? .. .. .. Ou plutôt, standardisez les paramètres de fuseau horaire.

Recommended Posts

timedatectl et Java TimeZone
Java et JavaScript
XXE et Java
Getter et Setter (Java)
[Java] Thread et exécutable
Java vrai et faux
[Java] Comparaison des chaînes de caractères et && et ||
Java - Sérialisation et désérialisation
[Java] Arguments et paramètres
[Java] Branchement et répétition
[Java] Types de variables et types
java (classe et instance)
[Java] Surcharge et remplacement
Etudier Java # 2 (\ marque et opérateur)
Java version 8 et fonctionnalités ultérieures
[Java] Différence entre == et égal
[Java] Zone de pile et zone statique
[Java] Classe générique et méthode générique
Programmation Java (variables et données)
Cryptage et décryptage Java PDF
Définition et instanciation de classe Java
[Java] À propos de String et StringBuilder
[Java] HashCode et remplacement égal
☾ Instruction Java / Repeat et instruction de contrôle de répétition
Méthodes Java et surcharges de méthodes
java Generics T et? Différence
Avantages et inconvénients de Java
java (branchement conditionnel et répétition)
À propos du package Java et de l'importation
[Java] Téléchargez une image et convertissez-la en Base64
Histoire de remplacement C # et Java
Méthodes et classes abstraites Java
Instructions Java while et for
Encapsulation Java et getters et setters
À propos des méthodes Java statiques et non statiques
J'ai comparé les constructeurs PHP et Java
Utiliser java avec MSYS et Cygwin
Traçage distribué avec OpenCensus et Java
[Java] Différence entre Hashmap et HashTable
Déclaration, initialisation et types de variables Java
Insertion Java Excel et extraction d'images
Installez Java et Tomcat avec Ansible
SDK AWS pour Java 1.11.x et 2.x
[Java] Types de base et notes d'instructions
Date de sortie de Java et résumé EOL
À propos de Biocontainers fastqc et Java
Java pour les débutants, les expressions et les opérateurs 1
Série Java Primer (variations et types)
Exemple d'encodage et de décodage en Java
[Java débutant] À propos de l'abstraction et de l'interface
Types de données de base et types de référence (Java)
[Java] Traitement en boucle et table de quatre-vingt-dix-neuf
Arguments Java, valeurs de retour et surcharges
Mécanisme de référence Java (pile et tas)
Utilisez JDBC avec Java et Scala.
Java pour les débutants, les expressions et les opérateurs 2
Nouvelles fonctionnalités de Java 9 et exemple de code
[Java débutant] == opérateur et méthode equals
[Java] Déclarer et initialiser un tableau