国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Java中的時(shí)區(qū)轉(zhuǎn)換小結(jié)

原文

時(shí)間加減

                Date currentDate = new Date(System.currentTimeMillis());                Calendar cal = Calendar.getInstance();                cal.setTime(currentDate);                cal.add(Calendar.DAY_OF_MONTH, -1);//減一天時(shí)間                startTime=outputFormat.format(cal.getTime());

開發(fā)跨地域的程序時(shí),常需要進(jìn)行時(shí)區(qū)轉(zhuǎn)換,一個(gè)設(shè)計(jì)優(yōu)良的系統(tǒng),也必須考慮對(duì)多時(shí)區(qū)的支持。JDK提供了很多方便的機(jī)制和工具,來幫助我們解決時(shí)區(qū)轉(zhuǎn)換問題。

解決跨時(shí)區(qū)問題的關(guān)鍵在于時(shí)間的記錄形式。若將時(shí)間單純的記錄成“2011-05-14 23:30:00”,其中蘊(yùn)含的信息并不足以進(jìn)行時(shí)區(qū)轉(zhuǎn)換,因?yàn)闊o法獲知這是中國的23點(diǎn)30,還是美國的23點(diǎn)30,更不用說復(fù)雜的夏令時(shí)問題了。

我們可以使用一個(gè)long類型的變量來記錄時(shí)間,該變量的值等于從1970年1月1日 00:00:00 GMT到記錄時(shí)間點(diǎn)以來的毫秒數(shù),其中GMT代表格林威治標(biāo)準(zhǔn)時(shí)間,通過這個(gè)差值,可以獲得記錄時(shí)間點(diǎn)的格林威治(零時(shí)區(qū))時(shí)間,進(jìn)而能方便的轉(zhuǎn)換成全世界各時(shí)區(qū)的時(shí)間。(很多數(shù)據(jù)庫引擎就是如此處理時(shí)間類型數(shù)據(jù))

在Java中,有兩個(gè)常用方法來獲取以上描述的值:

  1. System.currentTimeMillis(),該方法的返回值是從1970年1月1日 00:00:00 GMT至當(dāng)前時(shí)間點(diǎn)以來的毫秒數(shù),通常被用來獲取當(dāng)前系統(tǒng)時(shí)間;
  2. java.util.Date的getTime(),該方法的返回值是從1970年1月1日 00:00:00 GMT至Date對(duì)象所表示的時(shí)間點(diǎn)以來的毫秒數(shù),通常被用來獲取特定的時(shí)間。

此外,我們還需要借助java.util.TimeZone類,來獲取特定的時(shí)區(qū),JRE安裝目錄下的\lib\zi文件夾列出了所有TimeZoneID,如:Asia/Shanghai。最后,使用java.text.SimpleDateFormat類提供的方法進(jìn)行轉(zhuǎn)換,并格式化輸出。

//1. 將系統(tǒng)當(dāng)前時(shí)間轉(zhuǎn)換成美國東部時(shí)間  // America/Los_Angeles 洛杉磯時(shí)間TimeZone timeZoneNY = TimeZone.getTimeZone("America/New_York");SimpleDateFormat outputFormat = new SimpleDateFormat("EEE MMM d HH:mm:ss Z yyyy", Locale.US);outputFormat.setTimeZone(timeZoneNY);Date date = new Date(System.currentTimeMillis());System.out.println(outputFormat.format(date));
//2. 將一個(gè)以字符串形式輸入的北京時(shí)間轉(zhuǎn)換成美國東部時(shí)間String inputDate = "2011-05-14 23:30:00";TimeZone timeZoneSH = TimeZone.getTimeZone("Asia/Shanghai");TimeZone timeZoneNY = TimeZone.getTimeZone("America/New_York");SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");inputFormat.setTimeZone(timeZoneSH);Date date = null;try {    date = inputFormat.parse(inputDate);} catch (ParseException e) {}        SimpleDateFormat outputFormat = new SimpleDateFormat("EEE MMM d HH:mm:ss Z yyyy", Locale.US);outputFormat.setTimeZone(timeZoneSH);System.out.println("Asia/Shanghai:" + outputFormat.format(date));outputFormat.setTimeZone(timeZoneNY);System.out.println("America/New_York:" + outputFormat.format(date));

那么,夏令時(shí)(DST)的問題怎么解決呢?令人高興的是,JDK(or JRE)已自動(dòng)為我們進(jìn)行了夏令時(shí)處理。可以做個(gè)試驗(yàn),來驗(yàn)證以上第2段代碼能適用于夏令時(shí)轉(zhuǎn)換。美國在2011年開始和結(jié)束夏令時(shí)的時(shí)間是:3.13 2AM和11.6 2AM。

  1. 將輸入時(shí)間inputDate設(shè)置為"2011-03-13 14:59:59",輸出: Asia/Shanghai:Sun Mar 13 14:59:59 +0800 2011 America/New_York:Sun Mar 13 01:59:59 -0500 2011 此時(shí),美國東部時(shí)間還差1秒進(jìn)入夏令時(shí),與北京時(shí)間相差13小時(shí)。
  2. 將輸入時(shí)間inputDate設(shè)置為"2011-03-13 15:00:00",輸出: Asia/Shanghai:Sun Mar 13 15:00:00 +0800 2011 America/New_York:Sun Mar 13 03:00:00 -0400 2011 此時(shí),美國東部時(shí)間剛好進(jìn)入夏令時(shí),與北京時(shí)間相差12小時(shí),同時(shí),所使用的時(shí)區(qū)也發(fā)生了變化。
    結(jié)束夏令時(shí)的試驗(yàn)就不再贅述了。
    JDK(or JRE)之所以能自動(dòng)的進(jìn)行DST處理,是因?yàn)槠湟褍?nèi)置了各個(gè)國家的夏令時(shí)政策,并提供Timezone Updater Tool來保持低版本JDK(or JRE)的TimeZone更新,但SUN官方推薦使用JDK(or JRE)的更新來更新TimeZone信息。
    綜上,我們應(yīng)盡量在系統(tǒng)中使用如上描述的long類型變量來記錄時(shí)間,借助相應(yīng)的方法,可方便的格式化為不同時(shí)區(qū)的時(shí)間進(jìn)行顯示。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
不同時(shí)區(qū)之間,時(shí)間的轉(zhuǎn)換?
高級(jí)JAVA開發(fā)必備技能:java8 新日期時(shí)間API((一)JSR-310:ZoneId 時(shí)區(qū)和偏移量)(JAVA 小虛竹)
Java時(shí)區(qū)轉(zhuǎn)換及時(shí)間格式
各語言的unix時(shí)間戳 【轉(zhuǎn)】
徹底弄懂GMT、UTC、時(shí)區(qū)和夏令時(shí)
太贊了!最全的Python 處理日期與時(shí)間的全面總結(jié)!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服