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

java時(shí)區(qū)轉(zhuǎn)換的理解及示例詳解

 更新時(shí)間:2020年07月17日 15:59:15   作者:Even  
這篇文章主要介紹了java時(shí)區(qū)轉(zhuǎn)換的理解及示例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、時(shí)區(qū)的基本概念

GMT(Greenwich Mean Time),即格林威治標(biāo)準(zhǔn)時(shí),是東西經(jīng)零度的地方。人們將地球人為的分為24等份,每一等份為一個(gè)時(shí)區(qū),每時(shí)區(qū)橫跨經(jīng)度15度,時(shí)間正好為1小時(shí)。往西一個(gè)時(shí)區(qū),則減去一小時(shí);往東一個(gè)時(shí)區(qū),則加上一小時(shí)。中國(guó)在東經(jīng)120度上,(東經(jīng)120°-東經(jīng)0°)所得度數(shù)再除以15,即得8。

UTC(Coordinated Universal Time),即世界協(xié)調(diào)時(shí)間,是經(jīng)過平均太陽時(shí)(以格林威治時(shí)間GMT為準(zhǔn))、地軸運(yùn)動(dòng)修正后的新時(shí)標(biāo)以及以「秒」為單位的國(guó)際原子時(shí)所綜合精算而成的時(shí)間,計(jì)算過程相當(dāng)嚴(yán)謹(jǐn)精密,因此若以「世界標(biāo)準(zhǔn)時(shí)間」的角度來說,UTC比GMT來得更加精準(zhǔn)。UTC的本質(zhì)強(qiáng)調(diào)的是比GMT更為精確的世界時(shí)間標(biāo)準(zhǔn),不過對(duì)于現(xiàn)行表款來說,GMT與UTC的功能與精確度是沒有差別的。

CST時(shí)間卻同時(shí)可以代表如下 4 個(gè)不同的時(shí)區(qū):

  1. Central Standard Time (USA) UT-6:00
  2. Central Standard Time (Australia) UT+9:30
  3. China Standard Time UT+8:00
  4. Cuba Standard Time UT-4:00

可見,CST可以同時(shí)表示美國(guó),澳大利亞,中國(guó),古巴四個(gè)國(guó)家的標(biāo)準(zhǔn)時(shí)間。

DST(Daylight Saving Time),夏日節(jié)約時(shí)間,指在夏天太陽升起的比較早時(shí),將時(shí)鐘撥快一小時(shí),以提早日光的使用,在英國(guó)則稱為夏令時(shí)間(Summer Time)。

PDT以及PST, PDT 是 Pacific Daylight Time 的縮寫,美國(guó)夏季始于每年4月的第1個(gè)周日,止于每年10月的最后一個(gè)周日。夏令時(shí)比正常時(shí)間早一小時(shí),與PDT時(shí)間相對(duì)應(yīng)的是PST , Pacific Standard Time 。 夏時(shí)制結(jié)束后就是PST(太平洋標(biāo)準(zhǔn)時(shí)間),西八區(qū),與北京時(shí)間(東八區(qū))時(shí)差-16個(gè)小時(shí)。

二、java中的時(shí)區(qū)

可以用以下code,列出java中的時(shí)區(qū)

String ids[] = TimeZone.getAvailableIDs();
 for(String id: ids) {
  System.out.println(id);
 }

注意:你會(huì)發(fā)現(xiàn)在PDT不在該時(shí)區(qū)列表里
如果要用PDT,用PST作為時(shí)區(qū)可以得到準(zhǔn)確的時(shí)間,即使是夏令時(shí)

TimeZone timeZone = TimeZone.getTimeZone("PST");
 Calendar calendar = new GregorianCalendar();
 calendar.set(Calendar.MILLISECOND, 0);
 calendar.set(Calendar.SECOND, 0);
 calendar.set(Calendar.MINUTE, 0);
 calendar.set(Calendar.HOUR, 0);
 calendar.set(2018, 5, 10);// 輸出 Sun Jun 10 15:00:00 CST 2018
  //calendar.set(2018, 2, 10); // 輸出 Sat Mar 10 16:00:00 CST 2018
 calendar.setTimeZone(timeZone);
 System.out.println(calendar.getTime());

如果要獲得某個(gè)時(shí)區(qū)是否使用了DST,可以用useDaylightTime   

 boolean isUsingDST = TimeZone.getTimeZone("America/Los_Angeles").useDaylightTime();
 System.out.println(isUsingDST);

如果要判斷某個(gè)時(shí)間在某個(gè)時(shí)區(qū)是否發(fā)生了DST,可以用         

 Calendar calendarServer=Calendar.getInstance();
 calendarServer.add(Calendar.DATE, 1);
 boolean isUsingDST = clientTimeZone.inDaylightTime(calendarServer.getTime());
 System.out.println(isUsingDST);

獲取當(dāng)前時(shí)區(qū)和UTC的偏移量,在當(dāng)前時(shí)間5月13日(發(fā)生了DLS)比較getRawOffset() 和getOffset()

 TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));//將timezone設(shè)定到發(fā)生夏令時(shí)的地區(qū)
  int rowOffSet = TimeZone.getDefault().getRawOffset();
 int offSet = TimeZone.getDefault().getOffset(System.currentTimeMillis());
  System.out.println(offSet + " " + offSet/3600000 ); // -7 hours
 System.out.println(rowOffSet + " " + rowOffSet/3600000); // -8 hours

以下是時(shí)區(qū)轉(zhuǎn)化的例子

Date date = new Date(1359641834000L);// 2013-1-31 22:17:14
 String dateStr = "2013-3-31 22:17:14";
 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 dateFormat.setTimeZone(TimeZone.getTimeZone("CST"));// CST = GMT - 6(Central Standard Time (USA)而不是北京標(biāo)準(zhǔn)時(shí)間)

 try {
//  指該字串以CST來換算,所以實(shí)際時(shí)間是2013-1-31 22:17:14 CST(GMT - 6),輸出是以host的時(shí)區(qū)(GMT+8)進(jìn)行format,所以加14
  Date dateTmp = dateFormat.parse(dateStr);

   boolean isUsingDST = TimeZone.getTimeZone("CST").inDaylightTime(dateTmp);
  System.out.println(isUsingDST);// 輸出true,因此減1個(gè)小時(shí)
  System.out.println(dateTmp);//輸出 Fri Feb 01 11:17:14 CST 2013
 } catch(ParseException e) {
  e.printStackTrace();
 }
 String dateStrTmp = dateFormat.format(date);//數(shù)字是絕對(duì)時(shí)間,如果以host時(shí)區(qū)(GMT+8)來format就是22:17,這個(gè)數(shù)字以CST/GMT-6時(shí)區(qū)來format,就是-14
 System.out.println(dateStrTmp);// 輸出 2013-01-31 08:17:14

到此這篇關(guān)于java時(shí)區(qū)轉(zhuǎn)換的理解及示例詳解的文章就介紹到這了,更多相關(guān)java時(shí)區(qū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • @Valid 校驗(yàn)無效,BindingResult未獲得錯(cuò)誤的解決

    @Valid 校驗(yàn)無效,BindingResult未獲得錯(cuò)誤的解決

    這篇文章主要介紹了@Valid 校驗(yàn)無效,BindingResult未獲得錯(cuò)誤的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • JavaWeb如何實(shí)現(xiàn)本地文件上傳功能

    JavaWeb如何實(shí)現(xiàn)本地文件上傳功能

    這篇文章主要介紹了JavaWeb如何實(shí)現(xiàn)本地文件上傳功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • JAVA實(shí)現(xiàn)sm3加密簽名以及防止重復(fù)攻擊

    JAVA實(shí)現(xiàn)sm3加密簽名以及防止重復(fù)攻擊

    這篇文章主要給大家介紹了關(guān)于JAVA實(shí)現(xiàn)sm3加密簽名以及防止重復(fù)攻擊的相關(guān)資料,SM3是簽名算法,和MD5一樣(對(duì)于應(yīng)用層來說),SM4是對(duì)稱加密算法,和AES一樣(對(duì)于應(yīng)用層來說),需要的朋友可以參考下
    2023-10-10
  • java基礎(chǔ)的詳細(xì)了解第九天

    java基礎(chǔ)的詳細(xì)了解第九天

    這篇文章對(duì)Java編程語言的基礎(chǔ)知識(shí)作了一個(gè)較為全面的匯總,在這里給大家分享一下。需要的朋友可以參考,希望能給你帶來幫助
    2021-08-08
  • SpringMVC的詳細(xì)架構(gòu)你了解嘛

    SpringMVC的詳細(xì)架構(gòu)你了解嘛

    這篇文章主要為大家介紹了SpringMVC的詳細(xì)架構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Spring Boot 2.4新特性減少95%內(nèi)存占用問題

    Spring Boot 2.4新特性減少95%內(nèi)存占用問題

    這篇文章主要介紹了Spring Boot 2.4新特性減少95%內(nèi)存占用問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • MyBatis多對(duì)多映射初識(shí)教程

    MyBatis多對(duì)多映射初識(shí)教程

    這篇文章重點(diǎn)給大家介紹mybatis多對(duì)多映射,多對(duì)多映射的例子也很常見,本文通過代碼實(shí)例相結(jié)合的方式給大家介紹mybatis多對(duì)多映射,需要的朋友參考下吧
    2016-08-08
  • java實(shí)現(xiàn)短地址服務(wù)的方法(附代碼)

    java實(shí)現(xiàn)短地址服務(wù)的方法(附代碼)

    大多數(shù)情況下URL太長(zhǎng),字符多,不便于發(fā)布復(fù)制和存儲(chǔ),本文就介紹了通過java實(shí)現(xiàn)短地址服務(wù),減少了許多使用太長(zhǎng)URL帶來的不便,需要的朋友可以參考下
    2015-07-07
  • Java多線程Semaphore工具的使用詳解

    Java多線程Semaphore工具的使用詳解

    Semaphore 是一種用于控制線程并發(fā)訪問數(shù)的同步工具。它通過維護(hù)一定數(shù)量的許可證來限制對(duì)共享資源的訪問,許可證的數(shù)量就是可以同時(shí)訪問共享資源的線程數(shù)目,需要的朋友可以參考下
    2023-05-05
  • Java對(duì)象在內(nèi)存中的布局是如何實(shí)現(xiàn)的?

    Java對(duì)象在內(nèi)存中的布局是如何實(shí)現(xiàn)的?

    Java對(duì)象在內(nèi)存中屬于oop-klass二分模型,即對(duì)象的實(shí)例數(shù)據(jù)和對(duì)象類型的元數(shù)據(jù)(字段定義、方法、常量池等元數(shù)據(jù))是分開存儲(chǔ)的.而由于JVM對(duì)對(duì)象內(nèi)相同寬度的字段分配在一起,所以只要指定了字段類型分配的順序,就可以計(jì)算出每種類型字段相對(duì)于當(dāng)前對(duì)象的偏移起始位置
    2021-06-06

最新評(píng)論