詳解Java中的時(shí)間處理與時(shí)間標(biāo)準(zhǔn)
UTC (世界標(biāo)準(zhǔn)時(shí)間)
協(xié)調(diào)世界時(shí),又稱世界標(biāo)準(zhǔn)時(shí)間或世界協(xié)調(diào)時(shí)間,簡(jiǎn)稱UTC(從英文“Coordinated Universal Time”/法文“Temps
Universel Coordonné”而來),是最主要的世界時(shí)間標(biāo)準(zhǔn),其以原子時(shí)秒長(zhǎng)為基礎(chǔ),在時(shí)刻上盡量接近于格林尼治標(biāo)準(zhǔn)時(shí)間。
GMT (格林尼治平時(shí))
格林尼治平時(shí)(又稱格林尼治平均時(shí)間或格林尼治標(biāo)準(zhǔn)時(shí)間,舊譯格林威治標(biāo)準(zhǔn)時(shí)間;英語(yǔ):Greenwich Mean Time,GMT)是指位于英國(guó)倫敦郊區(qū)的皇家格林尼治天文臺(tái)的標(biāo)準(zhǔn)時(shí)間,因?yàn)楸境踝游缇€被定義在通過那里的經(jīng)線。
理論上來說,格林尼治標(biāo)準(zhǔn)時(shí)間的正午是指當(dāng)太陽(yáng)橫穿格林尼治子午線時(shí)(也就是在格林尼治上空最高點(diǎn)時(shí))的時(shí)間。由于地球在它的橢圓軌道里的運(yùn)動(dòng)速度不均勻,這個(gè)時(shí)刻可能與實(shí)際的太陽(yáng)時(shí)有誤差,最大誤差達(dá)16分鐘。
由于地球每天的自轉(zhuǎn)是有些不規(guī)則的,而且正在緩慢減速,因此格林尼治時(shí)間已經(jīng)不再被作為標(biāo)準(zhǔn)時(shí)間使用?,F(xiàn)在的標(biāo)準(zhǔn)時(shí)間,是由原子鐘報(bào)時(shí)的協(xié)調(diào)世界時(shí)(UTC)。
CST (北京時(shí)間)
北京時(shí)間,China Standard Time,中國(guó)標(biāo)準(zhǔn)時(shí)間。在時(shí)區(qū)劃分上,屬東八區(qū),比協(xié)調(diào)世界時(shí)早8小時(shí),記為UTC+8。
不過這個(gè)CST這個(gè)縮寫比較糾結(jié)的是它可以同時(shí)代表四個(gè)不同的時(shí)間: 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
Java Date使用UTC時(shí)間,如 Tue Jan 05 14:28:41 CST 2016 表示China Standard Time UT+8:00 。
Java時(shí)間處理
日期和時(shí)間模式 日期和時(shí)間格式由日期和時(shí)間模式 字符串指定。在日期和時(shí)間模式字符串中,未加引號(hào)的字母 ‘A’ 到’Z’ 和’a’ 到’z’ 被解釋為模式字母,用來表示日期或時(shí)間字符串元素。文本可以使用單引號(hào) (‘) 引起來,以免進(jìn)行解釋。””” 表示單引號(hào)。所有其他字符均不解釋;只是在格式化時(shí)將它們簡(jiǎn)單復(fù)制到輸出字符串,或者在解析時(shí)與輸入字符串進(jìn)行匹配。
定義了以下模式字母(所有其他字符’A’ 到’Z’ 和’a’ 到’z’ 都被保留):
字母 | 日期或時(shí)間元素 | 類型 | 示例 |
---|---|---|---|
G | Era 標(biāo)志符 | Text | AD |
y | 年份 | Number | 1996; 96 |
M | 年份中的月份 | Text | July; Jul; 07 |
w | 年份中的周數(shù) | Number | 27 |
W | 月份中的周數(shù) | Number | 2 |
D | 年份中的天數(shù) | Number | 189 |
d | 月份中的天數(shù) | Number | 10 |
F | 月份中的星期 | Number | 2 |
E | 星期中的天數(shù) | Text | Tuesday; Tue |
a | Am/pm 標(biāo)記 | Text | PM |
H | 一天中的小時(shí)數(shù)(0-23) | Number | 0 |
k | 一天中的小時(shí)數(shù)(1-24) | Number | 24 |
K | am/pm 中的小時(shí)數(shù)(0-11) | Number | 0 |
h | am/pm 中的小時(shí)數(shù)(1-12) | Number | 12 |
m | 小時(shí)中的分鐘數(shù) | Number | 30 |
s | 分鐘中的秒數(shù) | Number | 55 |
S | 毫秒數(shù) | Number | 978 |
z | 時(shí)區(qū) | General time zone | Pacific Standard Time; PST; GMT-08:00 |
Z | 時(shí)區(qū) | RFC 822 time zone | -0800 |
在實(shí)際開發(fā)過程中經(jīng)常會(huì)遇到將Date類型的數(shù)據(jù)轉(zhuǎn)換為String 類型或?qū)tring 類型的日期轉(zhuǎn)換成Date類型的問題。下面就介紹一下如何將String類型的GMT、GST日期轉(zhuǎn)換成Date對(duì)象。
JDK中提供了SimpleDateFormat類來實(shí)現(xiàn)String類型的日期和Date對(duì)象之間的互轉(zhuǎn)。
1.GMT時(shí)間轉(zhuǎn)換
//字符串轉(zhuǎn)Date String stringDate = "Thu Oct 16 07:13:48 GMT 2015"; SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM ddHH:mm:ss 'GMT' yyyy",Locale.US); Date date =sdf.parse(stringDate); System.out.println(date.toString()); //Date轉(zhuǎn)字符串 sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(new Date()));
2.
//格式化時(shí)間 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); String time = sdf.format(new Date()); System.out.println(time); //解析時(shí)間 2016-01-05T15:06:58+0800 Date date = sdf.parse(time); System.out.println(date);
3.
//T代表后面跟著時(shí)間,Z代表UTC統(tǒng)一時(shí)間 //格式化時(shí)間 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); String time = sdf.format(new Date()); System.out.println(time); //解析時(shí)間 2016-01-05T15:09:54Z Date date = sdf.parse(time); System.out.println(date);
同理,我們使用Joda-Time實(shí)現(xiàn)。
以上就是詳解Java中的時(shí)間處理與時(shí)間標(biāo)準(zhǔn)的詳細(xì)內(nèi)容,更多關(guān)于Java時(shí)間處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
用Java代碼實(shí)現(xiàn)一幅春聯(lián)詳解
大家好,本篇文章主要講的是用Java代碼實(shí)現(xiàn)一幅春聯(lián)詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01SpringBoot Security密碼加鹽實(shí)例
這篇文章主要為打擊介紹了SpringBoot Security密碼加鹽實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02JAVA匿名內(nèi)部類語(yǔ)法分析及實(shí)例詳解
這篇文章主要介紹了JAVA匿名內(nèi)部類語(yǔ)法分析及實(shí)例詳解,匿名內(nèi)部類可以使你的代碼更加簡(jiǎn)潔,它與局部類很相似,不同的是它沒有類名,如果某個(gè)局部類你只需要用一次,那么你就可以使用匿名內(nèi)部類。對(duì)此感興趣的可以了解一下2020-07-07Java實(shí)現(xiàn)一鍵生成表controller,service,mapper文件
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)一鍵生成表controller,service,mapper文件,文中的示例代碼講解詳細(xì),需要的可以收藏一下2023-05-05MP(MyBatis-Plus)實(shí)現(xiàn)樂觀鎖更新功能的示例代碼
這篇文章主要介紹了MP(MyBatis-Plus)實(shí)現(xiàn)樂觀鎖更新功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01SpringBoot favicon Chrome設(shè)置問題解決方案
在本篇文章里小編給大家分享的是關(guān)于SpringBoot favicon Chrome設(shè)置問題實(shí)例內(nèi)容,小的朋友們可以參考學(xué)習(xí)下。2020-02-02Maven熱部署devtools的實(shí)現(xiàn)示例
本文主要介紹了Maven熱部署devtools的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Java基于接口實(shí)現(xiàn)模擬動(dòng)物聲音代碼實(shí)例
這篇文章主要介紹了Java基于接口實(shí)現(xiàn)模擬動(dòng)物聲音代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06