Rumah  >  Artikel  >  Java  >  Bagaimana untuk menyelesaikan masalah perbezaan zon waktu apabila menanyakan pangkalan data springboot

Bagaimana untuk menyelesaikan masalah perbezaan zon waktu apabila menanyakan pangkalan data springboot

PHPz
PHPzke hadapan
2023-06-04 17:37:031518semak imbas

    Perbezaan zon waktu yang berlaku apabila menanyakan pangkalan data springboot

    Dalam projek baru-baru ini, berbilang sumber data telah digunakan untuk memindahkan data daripada perpustakaan MySQL ke perpustakaan mongo dan mendapati bahawa Akan ada perbezaan masa 8 jam antara data yang diambil dan data asal

    Akhirnya, saya akhirnya menyelesaikan masalah dan merekodkannya:

    Saya melihat dua. kaedah yang lebih praktikal dalam talian, kerana Disebabkan springboot yang digunakan, apa yang saya gunakan di sini adalah untuk mengubah suai aplikasi fail konfigurasi.yml Selain itu, kaedah lain boleh didapati dalam talian

    1 pangkalan data, kami menambah item

    &serverTimezone=GMT%2b8
    rrree

    Format asal sepatutnya seperti ini:

     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: ********

    2 Tambah konfigurasi jackson terus ke fail konfigurasi but

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

    Dengan cara ini , masa boleh diubah suai dengan jayanya, dan lain-lain Anda boleh menyemak kaedah

    springboot new Date() perbezaan zon masa ialah 8 jam

    1 Dalam persekitaran k8s, bandingkan masa dalam kod . Perbezaannya ialah 8 jam di bawah Date() baharu

    Semak zon waktu hos ialah zon waktu cst

    Gunakan kod java untuk menulis zon waktu pengawal dan mendapati ia ialah kod GMT

    Seperti berikut:

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

    Zon waktu keluaran ialah GMT, yang berbeza daripada mesin hos Jika anda tidak dapat mengendalikan operasi dan penyelenggaraan, anda perlu melakukannya diri sendiri

    Nampaknya zon waktu menjadi masalah -

    1 Tambah pelayan parameterTimezone=Asia/Shanghai ke pautan pangkalan data db

    2. Tambahkan skrip permulaan springboot -Duser.timezone=GMT+08

    3 konfigurasi global Jackson

    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());

    4 anotasi jackson

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah perbezaan zon waktu apabila menanyakan pangkalan data springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam