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

Java對世界不同時區(qū)timezone之間時間轉(zhuǎn)換的處理方法

 更新時間:2020年07月17日 15:57:53   作者:楊博東的博客  
這篇文章主要介紹了Java對世界不同時區(qū)timezone之間時間轉(zhuǎn)換的處理方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

最近出現(xiàn)一個問題是這樣的:我們的系統(tǒng)在國外打印的日志時間由于時差關(guān)系和國內(nèi)不一致,看起來不方便,希望國外的日志和國內(nèi)保持一致,即:需要對不同時區(qū)的時間做轉(zhuǎn)換調(diào)整,統(tǒng)一為國內(nèi)時間。

一、關(guān)于時區(qū)的一些概念

1.1 什么是時區(qū)?

timezone,即由于世界各國家與地區(qū)經(jīng)度不同,地方時也有所不同,按照經(jīng)度將全球劃分為24個時區(qū)。

時區(qū)有相應(yīng)的英文字母縮寫,例如GMT,UTC,CST等,常見的時區(qū),具體參考:java時區(qū)理解。

1.2 什么是夏令時?

通俗易懂的解釋就是:夏令時開始的時候,大家在夜里2點把表往前調(diào)一個小時,即本來兩點,被你手動調(diào)成了三點,如果你七點起床,那你那天晚上就會少睡一個小時,為什么這么做是因為夏天的時候7點其實天已經(jīng)亮了,這樣你到了第二天晚上8點(其實是之前的7點)就應(yīng)該睡覺了,這樣就可以節(jié)省電了,所以夏令時叫(Daylight Saving Time:DST),這篇文章講了為什么要有夏令時?什么時候去修改表的時間?為什么是晚上2點修改?反對夏令時?還有人寫paper說夏令時沒什么用。

二、如何在不同時區(qū)之間轉(zhuǎn)換時間

上部分分析了不同時區(qū),還有夏令時的區(qū)別,即我們在轉(zhuǎn)換時區(qū)的時候要考慮這兩個問題,基本思路是:

  1. 獲取到源時區(qū)相對于GMT的差距(考慮夏令時)。
  2. 獲取到目的時區(qū)相對于GMT的差距(考慮夏令時)。
  3. 用當(dāng)前的時間 - 源差距 + 目的差距

代碼如下所示:

public class TimeZoneTransform {

 private static String dateTransformBetweenTimeZone(Date sourceDate, DateFormat formatter,
  TimeZone sourceTimeZone, TimeZone targetTimeZone) {
 Long targetTime = sourceDate.getTime() - sourceTimeZone.getRawOffset() + targetTimeZone.getRawOffset();
 return getTime(new Date(targetTime), formatter);
 }

 private static String getTime(Date date, DateFormat formatter) {
 return formatter.format(date);
 }

 private static String getTimeZone() {
 Calendar cal = Calendar.getInstance();
 // getOffset will access to offset and contains DaylightTime
 int timeZone = cal.getTimeZone().getOffset(System.currentTimeMillis()) / (3600000);
 if (timeZone >= 0) {
 return String.valueOf("+" + timeZone);
 }
 return String.valueOf(timeZone);
 }

 public static String getGMTTime(Date date, SimpleDateFormat formatter) {
 TimeZone srcTimeZone = TimeZone.getTimeZone("GMT" + getTimeZone());
 TimeZone destTimeZone = TimeZone.getTimeZone("GMT+8");

 return dateTransformBetweenTimeZone(date, formatter, srcTimeZone, destTimeZone);
 }

 public static void main(String[] args) {
 System.out.println(getGMTTime(new Date(System.currentTimeMillis()), new SimpleDateFormat()));
 }
}

三、Java中關(guān)于時間處理的類

關(guān)于Date,Calendar,LocalDate/LocalTime的介紹文章。

參考資料:

Java時區(qū)處理之Date,Calendar,TimeZone,SimpleDateFormat

到此這篇關(guān)于Java對世界不同時區(qū)timezone之間時間轉(zhuǎn)換的處理方法的文章就介紹到這了,更多相關(guān)Java不同時區(qū)timezone時間轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java selenium元素定位大全

    java selenium元素定位大全

    本文主要介紹java selenium元素定位,這里整理了selenium元素定位的相關(guān)資料,有興趣的小伙伴可以參考下
    2016-08-08
  • 淺析Java中內(nèi)部鎖和顯示鎖的使用

    淺析Java中內(nèi)部鎖和顯示鎖的使用

    在java中鎖主要兩類,內(nèi)部鎖synchronized和顯示鎖java.util.concurrent.locks.Lock,本文將來和大家聊聊這兩者的相關(guān)知識,需要的可以參考一下
    2023-06-06
  • 在spring-boot工程中添加spring mvc攔截器

    在spring-boot工程中添加spring mvc攔截器

    這篇文章主要介紹了在spring-boot工程中添加spring mvc攔截器,Spring MVC的攔截器(Interceptor)不是Filter,同樣可以實現(xiàn)請求的預(yù)處理、后處理。,需要的朋友可以參考下
    2019-06-06
  • javaweb 項目初始配置的方法步驟

    javaweb 項目初始配置的方法步驟

    本文主要介紹了javaweb 項目初始配置的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Resttemplate中設(shè)置超時時長方式

    Resttemplate中設(shè)置超時時長方式

    這篇文章主要介紹了Resttemplate中設(shè)置超時時長方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java連接zookeeper的實現(xiàn)示例

    java連接zookeeper的實現(xiàn)示例

    ZooKeeper官方提供了Java API,可以通過Java代碼來連接zookeeper服務(wù)進(jìn)行操作,本文就來介紹一下java連接zookeeper的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Spring Cloud Hystrix線程池不足的解決方法

    Spring Cloud Hystrix線程池不足的解決方法

    這篇文章主要介紹了Spring Cloud Hystrix線程池不足的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • SpringBoot中RabbitMQ集群的搭建詳解

    SpringBoot中RabbitMQ集群的搭建詳解

    單個的?RabbitMQ?肯定無法實現(xiàn)高可用,要想高可用,還得上集群。這篇文章主要介紹了SpringBoot中RabbitMQ集群的兩種模式的搭建:普通集群搭建和鏡像集群搭建,需要的朋友可以參考一下
    2021-12-12
  • Java觀察者設(shè)計模式詳解

    Java觀察者設(shè)計模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java觀察者設(shè)計模式,對觀察者設(shè)計模式進(jìn)行分析理解,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Java中數(shù)組協(xié)變和范型不變性踩坑記錄

    Java中數(shù)組協(xié)變和范型不變性踩坑記錄

    數(shù)組的協(xié)變性來源于數(shù)組的一個優(yōu)勢,這篇文章主要給大家介紹了關(guān)于Java中數(shù)組協(xié)變和范型不變性踩坑的一些內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02

最新評論