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;
}
}