Rumah >Java >javaTutorial >Bagaimana untuk menyelesaikan masalah perbezaan zon waktu 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
&serverTimezone=GMT%2b8rrree
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: ********
&serverTimezone=GMT+8 这里使用%2b替换 + 号
Dengan cara ini , masa boleh diubah suai dengan jayanya, dan lain-lain Anda boleh menyemak kaedah
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!