欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JVM默認(rèn)時(shí)區(qū)為:Asia/Shanghai與java程序中GMT+08不一致異常

 更新時(shí)間:2022年10月31日 10:27:36   作者:ACoderForever  
這篇文章主要介紹了JVM默認(rèn)時(shí)區(qū)為:Asia/Shanghai與java程序中GMT+08不一致異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在Spring程序中配置了spring.jackson.time-zone=GMT+08時(shí),部分時(shí)間相差一個(gè)小時(shí)問(wèn)題,且是固定的時(shí)間出現(xiàn)了固定的時(shí)差問(wèn)題。

經(jīng)過(guò)排查,發(fā)現(xiàn)是JVM的默認(rèn)時(shí)區(qū)為

Asia/Shanghai,兩者不一致,然后Asia/Shanghai 這個(gè)時(shí)區(qū)并不一定與GMT+08這個(gè)時(shí)區(qū)相等,他們是2種定義標(biāo)準(zhǔn)。

Asia/Shanghai 這個(gè)代表的是中國(guó)的時(shí)區(qū),但在歷史中,有國(guó)家(包含中國(guó))政策頒布了在1986-1991年等還存在夏令時(shí)。

在這樣的時(shí)間區(qū)間,夏季時(shí),會(huì)將時(shí)間撥快1個(gè)小時(shí)(即東9區(qū)時(shí)間),夏季結(jié)束時(shí)會(huì)再次將時(shí)間撥回一個(gè)小時(shí)(即東8區(qū)時(shí)間)。

所以要保證程序顯示的時(shí)間沒(méi)有問(wèn)題,需要將JVM和spring.jackson.time-zone設(shè)置的時(shí)區(qū)保持一致即可解決問(wèn)題。

JVM中設(shè)置為

Asia/Shanghai,經(jīng)代碼調(diào)試出現(xiàn)的底層時(shí)區(qū)調(diào)整的測(cè)試案例。

 import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author Ashen
 * @date 16/07/2019
 */
public class Test {

	public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");

	static int[] offsets = {
			28800000,
			29143000,
			32400000,
			3600000
	};
	public static void main(String[] args) {
		test2();
	}

	public static void test1(){
		Date date0 = new Date(1986 - 1900, 07 - 1, 29);
		Date date1 = new Date(1980 - 1900, 07 - 1, 29);
		Date date2 = new Date(1988 - 1900, 07 - 1, 29);
	}

	public static void test2() {
		// 以下為JVM中時(shí)區(qū)為:Asia/Shanghai時(shí)的偏移量參數(shù)值(共9對(duì),分別為9年夏令時(shí)的開(kāi)啟與結(jié)束點(diǎn))
		long transitions[] = {
				-9048018124799999L,
				-8918966038528000L,
				-3823593062399950L,
				-3781140480000000L,
				-3722379263999950L,
				-3651969024000000L,
				2111569920000050L,
				2158623129600000L,
				2232955699200050L,
				2287440691200000L,
				2361773260800050L,
				2416258252800000L,
				2493068083200050L,
				2547553075200000L,
				2621885644800050L,
				2676370636800000L,
				2750703206400050L,
				2805188198400000L,
				8660385792000000L
		};
		for(int i=0;i<18;i++){
			Long longTime = transitions[i] >> 12;
			Long field2 = transitions[i] << 52 >> 60;
			Long field3 = transitions[i] << 56 >> 60;
			Long field4 = transitions[i] << 60 >> 60;
			Date date = new Date(longTime);
			System.out.println("時(shí)間"+getIndexStr(i)+": "+sdf.format(date)+" 保留值>>"+field2+" 日光節(jié)約量 >> "+getOffset(field3)+" GMT偏移量 >> "+getOffset(field4));
		}

	}

	public static String getIndexStr(int i){
		if(i<10) return "0"+i;
		else return String.valueOf(i);
	}

	public static String getOffset(long offset){
		return offsets[(int)offset]/(1000 *60* 60)+"小時(shí),";
	}

}

下面為運(yùn)行結(jié)果:清晰的看到Asia/Shanghai 時(shí)區(qū)的調(diào)整時(shí)間點(diǎn)與調(diào)整量。

transitions[] 中的值來(lái)源于DEBUG程序時(shí)復(fù)制jvm中的數(shù)據(jù)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)國(guó)密SM4加密解密的使用示例

    SpringBoot實(shí)現(xiàn)國(guó)密SM4加密解密的使用示例

    在商用密碼體系中,SM4主要用于數(shù)據(jù)加密,本文就來(lái)介紹一下SpringBoot實(shí)現(xiàn)國(guó)密SM4加密解密的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • JavaWeb學(xué)習(xí)筆記之Filter和Listener

    JavaWeb學(xué)習(xí)筆記之Filter和Listener

    這篇文章主要給大家介紹了關(guān)于JavaWeb學(xué)習(xí)筆記之Filter和Listener的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java?17新特性詳細(xì)講解與代碼實(shí)例

    Java?17新特性詳細(xì)講解與代碼實(shí)例

    這篇文章主要給大家介紹了關(guān)于Java?17新特性詳細(xì)講解與代碼實(shí)例的相關(guān)資料,Java 17是2021年9月發(fā)布的最新版本,其中包含了很多新特性和改進(jìn),這些新特性和改進(jìn)將進(jìn)一步提高 Java 語(yǔ)言的性能和可用性,需要的朋友可以參考下
    2023-09-09
  • Java多線程Future松獲取異步任務(wù)結(jié)果輕松實(shí)現(xiàn)

    Java多線程Future松獲取異步任務(wù)結(jié)果輕松實(shí)現(xiàn)

    這篇文章主要為大家介紹了Java多線程Future松獲取異步任務(wù)結(jié)果輕松實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Java 讀取excel 文件流代碼實(shí)例

    Java 讀取excel 文件流代碼實(shí)例

    這篇文章主要介紹了Java 讀取excel 文件流代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Spring依賴(lài)注入的幾種方式分享梳理總結(jié)

    Spring依賴(lài)注入的幾種方式分享梳理總結(jié)

    這篇文章主要介紹了Spring依賴(lài)注入的幾種方式分享梳理總結(jié),文章圍繞主題展開(kāi)詳細(xì),具有一定參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • 如何使用CountDownLatch同步j(luò)ava多線程

    如何使用CountDownLatch同步j(luò)ava多線程

    這篇文章主要介紹了如何使用CountDownLatch同步j(luò)ava多線程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java經(jīng)典面試題匯總:Mybatis

    Java經(jīng)典面試題匯總:Mybatis

    本篇總結(jié)的是Mybatis框架相關(guān)的面試題,后續(xù)會(huì)持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實(shí)習(xí)生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯(cuò)誤還望大家多多包涵,不吝賜教,謝謝
    2021-07-07
  • Java獲取時(shí)間打印到控制臺(tái)代碼實(shí)例

    Java獲取時(shí)間打印到控制臺(tái)代碼實(shí)例

    這篇文章主要介紹了Java獲取時(shí)間打印到控制臺(tái)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • spring boot中使用RabbitMQ routing路由詳解

    spring boot中使用RabbitMQ routing路由詳解

    本篇文章主要介紹了spring boot中使用RabbitMQ routing路由詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03

最新評(píng)論