1. 程式人生 > >Java時間處理(UTC時間和本地時間轉換)

Java時間處理(UTC時間和本地時間轉換)

文章內容引用來源:

前言:

本文主要對UTC、GMT、CST等時間概念做簡單的介紹,比較實用的在於本文最後一個小知識點:帶時區格式的時間和本地時間格式兩者之間的轉換方法,再次只是對簡單情況做處理,如果需要處理複雜的時間轉換,可以百度找一下jar包。

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 帶時區格式的時間和本地時間兩者之間的轉換方法工具類

下面這個工具類是為帶有時區格式的時間轉換為本地時間來開發的工具類,如果方法功能不滿足請自行百度,或自行新增方法。
/**
 * 時間格式轉換工具類(utc時間和本地時間兩者的轉換)
 * @author guoyangyang
 *
 */
public class TimeConverterUtil {

    private static Logger logger = Logger.getLogger(TimeConverterUtil.class);

    /**
     * 函式功能描述:UTC時間轉本地時間格式
     * @param utcTime UTC時間
     * @param utcTimePatten UTC時間格式
     * @param localTimePatten   本地時間格式
     * @return
本地時間格式的時間 * eg:utc2Local("2017-06-14 09:37:50.788+08:00", "yyyy-MM-dd HH:mm:ss.SSSXXX", "yyyy-MM-dd HH:mm:ss.SSS") */
public static String utc2Local(String utcTime, String utcTimePatten, String localTimePatten) { SimpleDateFormat utcFormater = new SimpleDateFormat(utcTimePatten); utcFormater.setTimeZone(TimeZone.getTimeZone("UTC"));//時區定義並進行時間獲取 Date gpsUTCDate = null; try { gpsUTCDate = utcFormater.parse(utcTime); } catch (ParseException e) { e.printStackTrace(); return utcTime; } SimpleDateFormat localFormater = new SimpleDateFormat(localTimePatten); localFormater.setTimeZone(TimeZone.getDefault()); String localTime = localFormater.format(gpsUTCDate.getTime()); return localTime; } /** * 函式功能描述:UTC時間轉本地時間格式 * @param utcTime UTC時間 * @param localTimePattern 本地時間格式(要轉換的本地時間格式) * @return 本地時間格式的時間 */ public static String utc2Local(String utcTime, String localTimePattern){ String utcTimePattern = "yyyy-MM-dd"; String subTime = utcTime.substring(10);//UTC時間格式以 yyyy-MM-dd 開頭,將utc時間的前10位擷取掉,之後是含有多時區時間格式資訊的資料 //處理當字尾為:+8:00時,轉換為:+08:00 或 -8:00轉換為-08:00 if(subTime.indexOf("+") != -1){ subTime = changeUtcSuffix(subTime, "+"); } if(subTime.indexOf("-") != -1){ subTime = changeUtcSuffix(subTime, "-"); } utcTime = utcTime.substring(0, 10) + subTime; //依據傳入函式的utc時間,得到對應的utc時間格式 //步驟一:處理 T if(utcTime.indexOf("T") != -1){ utcTimePattern = utcTimePattern + "'T'"; } //步驟二:處理毫秒SSS if(utcTime.indexOf(".") != -1){ utcTimePattern = utcTimePattern + " HH:mm:ss.SSS"; }else{ utcTimePattern = utcTimePattern + " HH:mm:ss"; } //步驟三:處理時區問題 if(subTime.indexOf("+") != -1 || subTime.indexOf("-") != -1){ utcTimePattern = utcTimePattern + "XXX"; } else if(subTime.indexOf("Z") != -1){ utcTimePattern = utcTimePattern + "'Z'"; } if("yyyy-MM-dd HH:mm:ss".equals(utcTimePattern) || "yyyy-MM-dd HH:mm:ss.SSS".equals(utcTimePattern)){ return utcTime; } SimpleDateFormat utcFormater = new SimpleDateFormat(utcTimePattern); utcFormater.setTimeZone(TimeZone.getTimeZone("UTC")); Date gpsUtcDate = null; try { gpsUtcDate = utcFormater.parse(utcTime); } catch (Exception e) { logger.error("utcTime converter localTime failed!!!", e); return utcTime; } SimpleDateFormat localFormater = new SimpleDateFormat(localTimePattern); localFormater.setTimeZone(TimeZone.getDefault()); String localTime = localFormater.format(gpsUtcDate.getTime()); return localTime; } /** * 函式功能描述:修改時間格式字尾 * 函式使用場景:處理當字尾為:+8:00時,轉換為:+08:00 或 -8:00轉換為-08:00 * @param subTime * @param sign * @return */ private static String changeUtcSuffix(String subTime, String sign){ String timeSuffix = null; String[] splitTimeArrayOne = subTime.split("\\" + sign); String[] splitTimeArrayTwo = splitTimeArrayOne[1].split(":"); if(splitTimeArrayTwo[0].length() < 2){ timeSuffix = "+" + "0" + splitTimeArrayTwo[0] + ":" + splitTimeArrayTwo[1]; subTime = splitTimeArrayOne[0] + timeSuffix; return subTime; } return subTime; } /** * 函式功能描述:獲取本地時區的表示(比如:第八區-->+08:00) * @return */ public static String getTimeZoneByNumExpress(){ Calendar cal = Calendar.getInstance(); TimeZone timeZone = cal.getTimeZone(); int rawOffset = timeZone.getRawOffset(); int timeZoneByNumExpress = rawOffset/3600/1000; String timeZoneByNumExpressStr = ""; if(timeZoneByNumExpress > 0 && timeZoneByNumExpress < 10){ timeZoneByNumExpressStr = "+" + "0" + timeZoneByNumExpress + ":" + "00"; } else if(timeZoneByNumExpress >= 10){ timeZoneByNumExpressStr = "+" + timeZoneByNumExpress + ":" + "00"; } else if(timeZoneByNumExpress > -10 && timeZoneByNumExpress < 0){ timeZoneByNumExpress = Math.abs(timeZoneByNumExpress); timeZoneByNumExpressStr = "-" + "0" + timeZoneByNumExpress + ":" + "00"; }else if(timeZoneByNumExpress <= -10){ timeZoneByNumExpress = Math.abs(timeZoneByNumExpress); timeZoneByNumExpressStr = "-" + timeZoneByNumExpress + ":" + "00"; }else{ timeZoneByNumExpressStr = "Z"; } return timeZoneByNumExpressStr; } }

相關推薦

Java時間處理(UTC時間本地時間轉換)

文章內容引用來源: 前言: 本文主要對UTC、GMT、CST等時間概念做簡單的介紹,比較實用的在於本文最後一個小知識點:帶時區格式的時間和本地時間格式兩者之間的轉換方法,再次只是對簡單情況做處理,如果需要處理複雜的時間轉換,可以百度找一下jar包。 1

java裡的日期格式 UTC本地時間互轉

Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) -1);//當前時間的前一小時舉例 SimpleDateFormat d

JAVA UTC時間本地時間

UT - 世界時 Universal Time 世界時是最早的時間標準。 在1884年,國際上將1s確定為全年內每日平均長度的1/8.64×104。以此標準形成的時間系統,稱為世界時,即 UT1。 1972年國際上開始使用國際原子時標,從那以後,經過格林

[C/C++]_[初級]_[關於使用C標準時間庫對UTC本地時間轉換]

場景 Android,Java的Date是UTC時間, 我們在讀取某些表的數值時往往得到的就是UTC秒數, 如何用C++轉換為本地時間是一個常見的功能需求. 還有就是UTC到本地時間的轉換, 已知道一個字串的UTC時間,如何轉換為對應的本地時間. C標準時間庫+擴充套件

Java的知識點22——時間處理相關類、Date時間類(java.util.Date)、DateFormat類SimpleDateFormat類

時間處理相關類 用long型別的變數來表示時間,獲得現在時刻的“時刻數值”:long now = System.currentTimeMillis(); Date時間類(java.util.Date)  在標準Java類庫中包含一個Date類。它的物件表示一個特

UTC時間本地時間小結

1、var utc=new Date().getTime()+2880000;//獲取北京時間,但是似乎和獲取的本地時間還相差一個月的毫秒數 2、     這個就是獲取本地時間的毫秒數           var date

在程式設計中UTC時間本地時間(LocalTime)的區別

 什麼是UTC時間,UTC時間和本地時間(LocalTime)的區別 世界協調時間(Universal Time Coordinated,UTC),GPS 系統中有兩種時間區分,一為UTC,另一為LT(地方時)兩者的區別為時區不同,UTC就是0時區的時間,(LocalTime

C#同步網絡時間本地時間的代碼

lac linq generic ray [1] 常用 seq update etime 做工程過程,將做工程過程經常用的內容做個收藏,下面內容內容是關於 C#同步網絡時間和本地時間的內容,希望對各位朋友有較大用途。 using System; using System.

容器本地時間相差8小時

因為搭建的服務用的是官方映象,發現其是用的美國時區,導致和本地時間相差8小時。 解決辦法: 方法一:重啟容器,新增引數-v /etc/localtime:/etc/localtime:ro 方法二:不重啟容器的話,複製檔案到容器中               docker

C實現Unix時間本地時間轉化

我們平常說時間都說的幾點幾分幾秒,星期幾,但是在計算機裡面並不是直接使用我們所說的時間,而是使用Unix時間戳,這樣不管是哪個平臺,哪個系統,都可以根據自己對時間的定義進行轉換,像Java,PHP等都提供了介面來進行轉化,C庫裡面也有這樣的函式,那具體是怎麼實現

python 時間處理(timedatetime介紹)

python的有關時間的有哪幾種呢?今天我們介紹兩個:time和datetime  time模組提供各種操作時間的函式  datetime模組定義了下面這幾個類: datetime.date:表示日期的類。常用的屬性有year, month, day; datetime.ti

c/c++日期時間處理與字符串string轉換

輸入輸出 一個數 代碼 string轉換 計算 字符 span 日期 時間轉化 在c/c++實際問題的編程中,我們經常會用到日期與時間的格式,在算法運行中,通常將時間轉化為int來進行計算,而處理輸入輸出的時候,日期時間的格式卻是五花八門,以各種標點空格相連或者不加標點。

Java 異常處理的誤區經驗總結

ORC 進一步 相關 ror final 額外 檢測 業務 清理資源 一 異常分檢測異常和非檢測異常,異常的應用情景可以概括為以下: 調用代碼不能繼續執行,需要立即終止。出現這種情況的可能性太多太多,例如服務器連接不上、參數不正確等。這些時候都適用非檢測異常,不需要調用

java程式實現Unicode碼中文互相轉換筆記

有了前一篇文章的瞭解,大概瞭解了unicode編碼格式了 ANSI:漢字區的內碼範圍高位元組從B0-F7,低位元組從A1-FEUnicode:漢字的Unicode編碼範圍為\u4E00-\u9FA5 \uF900-\uFA2D,如果不在這個範圍內就不是漢字了. 現在程式中

SQL Server 本地時間UTC時間的相互轉換

get gpo () localdate lda code date() post nbsp SET @UTCDate = DATEADD(hour, DATEDIFF(hour,GETDATE(),GETUTCDATE()), @LocalDate) SET @Local

java UTC時間local時間相互轉換

互轉 cat color except static 相互轉換 clas AS mil 1、local時間轉UTC時間 /** * local時間轉換成UTC時間 * @param localTime * @return *

java翁愷(WEEK2) UTC北京時間轉換

題目內容: UTC是世界協調時,BJT是北京時間,UTC時間相當於BJT減去8。現在,你的程式要讀入一個整數,表示BJT的時和分。整數的個位和十位表示分,百位和千位表示小時。如果小時小於10,則沒有千位部分;如果小時是0,則沒有百位部分;如果分小於10分,需要保

Java經典例項:紀元秒本地日期時間互換

Java版本:1.8開始 import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; /** * Created by Frank */ public class Curre

javautc時間怎麼轉換本地時間

java utc轉本地時間的方法:1、建立一個格式化時間物件simpleDateFormat,並初始化格式yyyy-MM-dd HH:mm:ss:SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-M

QDateTime 本地時間UTC時間轉換問題

        先說一下UTC,搜尋360百科: 協調世界時,又稱世界統一時間、世界標準時間、國際協調時間,簡稱UTC,是以原子時秒長為基礎,在時刻上儘量接近於世界時的一種時間計量系統。1979年12月3日在內瓦舉行的世界無線電行政大會通過決議,確定用“世界協調時間”取代“