Maison  >  Article  >  Java  >  Comment résoudre le problème de différence de fuseau horaire lors de l'interrogation de la base de données Springboot

Comment résoudre le problème de différence de fuseau horaire lors de l'interrogation de la base de données Springboot

PHPz
PHPzavant
2023-06-04 17:37:031508parcourir

    La différence de fuseau horaire qui se produit lors de l'interrogation de la base de données Springboot

    Dans un projet récent, plusieurs sources de données ont été utilisées pour migrer les données de la bibliothèque MySQL vers la bibliothèque mongo. -heure de différence entre les données récupérées et les données originales.

    Enfin, le problème a été résolu après que la belle-mère l'ait enregistré :

    J'ai vu deux méthodes plus pratiques sur Internet à cause du springboot utilisé. , celle que j'ai utilisée ici consiste à modifier le fichier de configuration application.yml. De plus, d'autres méthodes peuvent être trouvées en ligne,

    1 Dans la configuration de la connexion à la base de données, on ajoute un élément

    &serverTimezone=GMT%2b8
     primary:
          jdbc-url: jdbc:mysql://******:3306/***?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
          username: ****
          password: *****
        secondary:
          jdbc-url: jdbc:mysql://*******:3306/***?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
          username: *****
          password: ********

    Le format original devrait. soyez comme ceci :

    &serverTimezone=GMT+8 这里使用%2b替换 + 号

    2. Ajoutez la configuration de Jackson directement au fichier de configuration de démarrage

    #在application.yml中增加配置
    spring:
        jackson:
            time-zone: GMT+8

    comme ceci Vous pouvez modifier l'heure avec succès Il existe d'autres méthodes. Vous pouvez la vérifier

    springboot new Date() Le fuseau horaire. la différence est de 8 heures

    1 Dans l'environnement k8s, comparez l'heure dans le code. La différence est de 8 heures sous la nouvelle date()

    Vérifiez que le fuseau horaire de l'hôte est le fuseau horaire cst

    Utilisez le code Java pour écrire le fuseau horaire du contrôleur et trouvez qu'il est GMT

    Le code est le suivant :

    Calendar calendar = Calendar.getInstance();      
            System.out.println("目前时间:" + calendar.getTime());
            System.out.println("Calendar时区::" + calendar.getTimeZone().getID());
            System.out.println("user.timezone:" + System.getProperty("user.timezone"));
            System.out.println("user.country:" + System.getProperty("user.country"));
            System.out.println("默认时区:" + TimeZone.getDefault().getID());

    Le fuseau horaire de sortie est GMT qui est différent de celui de l'hôte. Si vous ne parvenez pas à comprendre le fonctionnement et la maintenance, faites-le vous-même

    Il semble que le fuseau horaire soit le problème -

    1 Ajoutez le paramètre serverTimezone. =Asie/Shanghai au lien de base de données db

    2 Ajoutez le script de démarrage Springboot -Duser.timezone=GMT+08

    3 configuration globale de Jackson

    spring.jackson.date-format: yyyy-MM-dd HH:mm:ss
    spring.jackson.time-zone: GMT+8

    4.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer