Java中CST北京時間和UTC國際時間轉換


Java中CST北京時間和UTC國際時間轉換

http://www.beijing-time.org/time15.asp

1、UTC(世界標准時間)

協調世界時,又稱世界標准時間或世界協調時間,簡稱UTC(從英文“Coordinated Universal Time”/法文“TempsUniversel Coordonné”而來),是最主要的世界時間標准,其以原子時秒長為基礎,在時刻上盡量接近於格林尼治標准時間。

2、GMT(格林尼治平時)

格林尼治平時(又稱格林尼治平均時間或格林尼治標准時間,舊譯格林威治標准時間;英語:Greenwich MeanTime,GMT)是指位於英國倫敦郊區的皇家格林尼治天文台的標准時間,因為本初子午線被定義在通過那里的經線。 理論上來說,格林尼治標准時間的正午是指當太陽橫穿格林尼治子午線時(也就是在格林尼治上空最高點時)的時間。由於地球在它的橢圓軌道里的運動速度不均勻,這個時刻可能與實際的太陽時有誤差,最大誤差達16分鍾。由於地球每天的自轉是有些不規則的,而且正在緩慢減速,因此格林尼治時間已經不再被作為標准時間使用。現在的標准時間,是由原子鍾報時的協調世界時(UTC)。

3、CST(北京時間)

北京時間,China Standard Time,中國標准時間。在時區划分上,屬東八區,比協調世界時早8小時,記為UTC+8。不過這個CST這個縮寫比較糾結的是它可以同時代表四個不同的時間:

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

4、Java中CST北京時間和UTC國際時間轉換

package com.cnsyear.springbootrabbitmq.web;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class DateLocalUtcUtil {

    /**
     * local時間轉換成UTC時間
     *
     * @param localTime
     * @return
     */
    public static Date localToUTC(String localTime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date localDate = null;
        try {
            localDate = sdf.parse(localTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        long localTimeInMillis = localDate.getTime();
        /** long時間轉換成Calendar */
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(localTimeInMillis);
        /** 取得時間偏移量 */
        int zoneOffset = calendar.get(java.util.Calendar.ZONE_OFFSET);
        /** 取得夏令時差 */
        int dstOffset = calendar.get(java.util.Calendar.DST_OFFSET);
        /** 從本地時間里扣除這些差量,即可以取得UTC時間*/
        calendar.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
        /** 取得的時間就是UTC標准時間 */
        Date utcDate = new Date(calendar.getTimeInMillis());
        return utcDate;
    }


    /**
     * utc時間轉成local時間
     *
     * @param utcTime
     * @return
     */
    public static Date utcToLocal(String utcTime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date utcDate = null;
        try {
            utcDate = sdf.parse(utcTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        sdf.setTimeZone(TimeZone.getDefault());
        Date localDate = null;
        String localTime = sdf.format(utcDate.getTime());
        try {
            localDate = sdf.parse(localTime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return localDate;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM