最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

Asia/Shanghai,兩者不一致,然后Asia/Shanghai 這個時區(qū)并不一定與GMT+08這個時區(qū)相等,他們是2種定義標準。

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

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

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

JVM中設(shè)置為

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

 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中時區(qū)為:Asia/Shanghai時的偏移量參數(shù)值(共9對,分別為9年夏令時的開啟與結(jié)束點)
		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("時間"+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)+"小時,";
	}

}

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

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

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

相關(guān)文章

  • eclipse啟動出現(xiàn)“failed to load the jni shared library”問題解決

    eclipse啟動出現(xiàn)“failed to load the jni shared library”問題解決

    這篇文章主要介紹了eclipse啟動出現(xiàn)“failed to load the jni shared library”問題解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java中String類的常見方法超詳細講解

    Java中String類的常見方法超詳細講解

    這篇文章主要介紹了Java中String類常見方法的相關(guān)資料,String類是不可變的,字符串常量池用于存儲字符串字面量,常用方法包括字符串查找、轉(zhuǎn)換、比較、替換、拆分和截取,需要的朋友可以參考下
    2025-04-04
  • 圖文詳解Maven工程打jar包的N種方式

    圖文詳解Maven工程打jar包的N種方式

    最近在打包maven項目時,該項目中僅有一個測試類,想打成jar包運行測試,所以下面這篇文章主要給大家介紹了關(guān)于Maven工程打jar包的N種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Java利用策略模式優(yōu)化過多if else代碼

    Java利用策略模式優(yōu)化過多if else代碼

    這篇文章主要介紹了Java利用策略模式優(yōu)化過多if else代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • SpringBoot 日志的配置及輸出應(yīng)用教程

    SpringBoot 日志的配置及輸出應(yīng)用教程

    Spring Boot 默認使用 SLF4J+Logback 記錄日志,并提供了默認配置。本文我們將重點介紹Spring Boot日志的配置及輸出。感興趣的小伙伴可以了解一下
    2021-12-12
  • SpringCloud的網(wǎng)關(guān)Zuul和Gateway詳解

    SpringCloud的網(wǎng)關(guān)Zuul和Gateway詳解

    SpringCloudZuul和SpringCloudGateway都是用于構(gòu)建微服務(wù)架構(gòu)中的API網(wǎng)關(guān)的組件,但SpringCloudGateway在性能、功能特性和生態(tài)支持等方面有一些優(yōu)勢,因此推薦使用SpringCloudGateway作為首選
    2025-02-02
  • 使用@RequestParam設(shè)置默認可以傳空值

    使用@RequestParam設(shè)置默認可以傳空值

    這篇文章主要介紹了使用@RequestParam設(shè)置默認可以傳空值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot CommandLineRunner應(yīng)用啟動后執(zhí)行代碼實例

    SpringBoot CommandLineRunner應(yīng)用啟動后執(zhí)行代碼實例

    本文將深入探討CommandLineRunner的工作原理、使用場景及最佳實踐,幫助開發(fā)者充分利用這一功能,構(gòu)建更加健壯的Spring Boot應(yīng)用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java SpringBoot整合SpringCloud

    Java SpringBoot整合SpringCloud

    SpringCloud專注于為典型的用例和擴展機制提供良好的開箱即用體驗,今天小編就帶大家認識SpringCloud都有些什么特點,感興趣的小伙伴留下來閱讀全文吧
    2021-09-09
  • 老生常談Java?網(wǎng)絡(luò)編程?——?Socket?詳解

    老生常談Java?網(wǎng)絡(luò)編程?——?Socket?詳解

    這篇文章主要介紹了Java?網(wǎng)絡(luò)編程?——?Socket?相關(guān)知識,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05

最新評論

许昌市| 延吉市| 敦煌市| 沙雅县| 桑植县| 旺苍县| 平凉市| 庄河市| 镇江市| 土默特右旗| 宁安市| 翁牛特旗| 嘉祥县| 河南省| 新乡市| 凤山县| 甘洛县| 信阳市| 柏乡县| 丹凤县| 龙岩市| 元朗区| 福安市| 运城市| 韶关市| 绥化市| 都江堰市| 临安市| 西和县| 柘城县| 德兴市| 崇仁县| 高雄县| 关岭| 旺苍县| 左云县| 普宁市| 宁波市| 香河县| 黄冈市| 绥芬河市|