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

Java時(shí)區(qū)轉(zhuǎn)換及Date類實(shí)現(xiàn)原理解析

 更新時(shí)間:2019年11月30日 16:35:26   作者:程序曉猿  
這篇文章主要介紹了Java時(shí)區(qū)轉(zhuǎn)換及Date類實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Java時(shí)區(qū)轉(zhuǎn)換及Date類實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、時(shí)區(qū)的說(shuō)明

地球表面按經(jīng)線從東到西,被劃成一個(gè)個(gè)區(qū)域,規(guī)定相鄰區(qū)域的時(shí)間相差1小時(shí)。在同一區(qū)域內(nèi)的東端和西端的人看到太陽(yáng)升起的時(shí)間最多相差不過(guò)1小時(shí)。當(dāng)人們跨過(guò)一個(gè)區(qū)域,就將自己的時(shí)鐘校正1小時(shí)(向西減1小時(shí),向東加1小時(shí)),跨過(guò)幾個(gè)區(qū)域就加或減幾小時(shí) ,所以同一時(shí)刻在不同時(shí)區(qū)表示的時(shí)間是不一樣的。

二、時(shí)間的表示

我們平時(shí)表示時(shí)間時(shí)通常是以一個(gè)格式化的字符串來(lái)表示一個(gè)時(shí)間,例如"2019-11-5 20:05"這個(gè)字符串表示的是2019年11月5日20點(diǎn)05分。但這里有一個(gè)隱含的前提,時(shí)區(qū)是自己當(dāng)前所在的時(shí)區(qū),即東八區(qū)的人看到這個(gè)時(shí)間認(rèn)為是東八區(qū)的20:05,而東九區(qū)的人會(huì)認(rèn)為是東九區(qū)的20:05,實(shí)際上這兩個(gè)時(shí)間相差了一個(gè)小時(shí)。所以要正確的表示一個(gè)特定時(shí)刻,還要再加上時(shí)區(qū)信息,例如"2019-11-5 20:05 +8:00"這個(gè)字符串不管哪個(gè)時(shí)區(qū)的人看到都知道表示的是東八區(qū)的時(shí)間。

三、時(shí)間戳

時(shí)間戳表示的是一個(gè)時(shí)間間隔,從0時(shí)區(qū)來(lái)看,表示從"1970-1-1 00:00 +0:00"到現(xiàn)在(2019-11-5 12:05 +0:00)時(shí)刻的時(shí)間間隔,而從東八區(qū)來(lái)看表示從"1970-1-1 08:00 +8:00"到現(xiàn)在(2019-11-5 20:05 +8:00)的時(shí)間間隔。

間隔=現(xiàn)在-起點(diǎn),因?yàn)楝F(xiàn)在和起點(diǎn)都相差了8小時(shí),所以時(shí)間間隔是一樣的,同樣的道理,在任意時(shí)區(qū)中現(xiàn)在這一個(gè)時(shí)刻的時(shí)間戳都是一樣的。

四、Date類和時(shí)間戳

java的Date類中實(shí)際保存的是某一個(gè)時(shí)刻的時(shí)間戳,所以同一時(shí)刻在任意時(shí)區(qū)獲取到的Date對(duì)象都是一樣的。當(dāng)使用SimpleDateFormat格式化日期時(shí),默認(rèn)的會(huì)以當(dāng)前的系統(tǒng)時(shí)區(qū)來(lái)格式化日期,所以同一時(shí)刻不同時(shí)區(qū)的人格式化日期得到的結(jié)果才會(huì)有時(shí)差。

所以以下代碼,在東八區(qū)和東九區(qū)得到的輸出相差了一個(gè)小時(shí),但它們的Date對(duì)象實(shí)際上表示了同一個(gè)時(shí)刻

public class TestDate {
  public static void main(String[] args) {
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date=new Date(1572960924868L);//以時(shí)間戳來(lái)給定一個(gè)特定時(shí)刻
    System.out.println(sdf.format(date));
  }
}

五、java中的時(shí)區(qū)轉(zhuǎn)換

SimpleDateFormat的對(duì)象可以設(shè)置時(shí)區(qū),這樣同一個(gè)Date對(duì)象就可以通過(guò)SimpleDateFormat來(lái)進(jìn)行時(shí)區(qū)轉(zhuǎn)換

  @Test
  public void test2(){
    Date date=new Date(1572960924868L);
    SimpleDateFormat sdf8=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sdf8.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));//設(shè)置時(shí)區(qū)為東八區(qū)
    System.out.println("東八區(qū)的時(shí)間:"+sdf8.format(date));//輸出格式化日期

    SimpleDateFormat sdf9=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sdf9.setTimeZone(TimeZone.getTimeZone("GMT+9:00"));//設(shè)置時(shí)區(qū)為東八區(qū)
    System.out.println("東九區(qū)的時(shí)間:"+sdf9.format(date));//輸出格式化日期
  }

輸出的結(jié)果如下圖

同一個(gè)時(shí)刻1572960924868,先轉(zhuǎn)為Date對(duì)象,再通過(guò)SimpleDateFormat對(duì)時(shí)區(qū)進(jìn)行轉(zhuǎn)換,并格式化成時(shí)間字符串輸出。

所以在實(shí)際的應(yīng)用中,遇到需要存儲(chǔ)時(shí)間的問(wèn)題時(shí),可以在數(shù)據(jù)庫(kù)中存儲(chǔ)時(shí)間對(duì)應(yīng)的時(shí)間戳,這樣在數(shù)據(jù)庫(kù)存儲(chǔ)時(shí)就不會(huì)有時(shí)區(qū)的問(wèn)題,而在應(yīng)用中需要用到時(shí)間時(shí),就把這個(gè)時(shí)間戳轉(zhuǎn)為Date,再通過(guò)SimpleDateFormat轉(zhuǎn)換成需要的時(shí)區(qū)的時(shí)間。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java通過(guò)ip獲取客戶端Mac地址的小例子

    java通過(guò)ip獲取客戶端Mac地址的小例子

    java通過(guò)ip獲取客戶端Mac地址的小例子,需要的朋友可以參考一下
    2013-03-03
  • idea導(dǎo)入配置Spring?Boot項(xiàng)目的詳細(xì)步驟教程

    idea導(dǎo)入配置Spring?Boot項(xiàng)目的詳細(xì)步驟教程

    這篇文章主要給大家介紹了關(guān)于idea導(dǎo)入配置Spring?Boot項(xiàng)目的詳細(xì)步驟,在項(xiàng)目開發(fā)過(guò)程中,無(wú)論是導(dǎo)入運(yùn)行團(tuán)隊(duì)開發(fā)的項(xiàng)目,還是一些開源項(xiàng)目,還是其他的項(xiàng)目,想要在IDEA中完整的運(yùn)行起來(lái)總有很多坑,需要的朋友可以參考下
    2023-08-08
  • java實(shí)現(xiàn)圖像轉(zhuǎn)碼為字符畫的方法

    java實(shí)現(xiàn)圖像轉(zhuǎn)碼為字符畫的方法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖像轉(zhuǎn)碼為字符畫的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • SpringBatch跳過(guò)異常和限制方式

    SpringBatch跳過(guò)異常和限制方式

    這篇文章主要介紹了SpringBatch跳過(guò)異常和限制方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Apache commons fileupload文件上傳實(shí)例講解

    Apache commons fileupload文件上傳實(shí)例講解

    這篇文章主要為大家詳細(xì)介紹了Apache commons fileupload文件上傳實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • idea64.exe.vmoptions文件如何設(shè)置調(diào)整VM配置文件

    idea64.exe.vmoptions文件如何設(shè)置調(diào)整VM配置文件

    這篇文章主要介紹了idea64.exe.vmoptions文件如何設(shè)置調(diào)整VM配置文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • springboot嵌套子類使用方式—前端與后臺(tái)開發(fā)的注意事項(xiàng)

    springboot嵌套子類使用方式—前端與后臺(tái)開發(fā)的注意事項(xiàng)

    這篇文章主要介紹了springboot嵌套子類使用方式—前端與后臺(tái)開發(fā)的注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 詳談Springfox與swagger的整合使用

    詳談Springfox與swagger的整合使用

    下面小編就為大家?guī)?lái)一篇詳談Springfox與swagger的整合使用。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • JAVA和JAVAC 命令詳細(xì)介紹

    JAVA和JAVAC 命令詳細(xì)介紹

    這篇文章主要介紹了JAVA和JAVAC 命令詳細(xì)介紹的相關(guān)資料,本文對(duì)java 和javac 命令進(jìn)行了詳解,并在Windows和Linux 平臺(tái)分別說(shuō)明,需要的朋友可以參考下
    2016-11-11
  • springboot整合kaptcha生成驗(yàn)證碼功能

    springboot整合kaptcha生成驗(yàn)證碼功能

    這篇文章主要介紹了springboot整合kaptcha生成驗(yàn)證碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論