日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Date和TimeZone的关系

發(fā)布時(shí)間:2025/3/13 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Date和TimeZone的关系 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java2平臺為我們提供了豐富的日期時(shí)間API。如java.util.Date;java.util.calendar;java.text.DateFormat等。那么它們之間有什么關(guān)系呢?

首先,java.util.Date代表一個(gè)時(shí)間點(diǎn),其值為距公元1970年1月1日 00:00:00的毫秒數(shù)。所以它是沒有時(shí)區(qū)和Locale概念的。java通過如下形式取得當(dāng)前時(shí)間點(diǎn):

Date now = new Date();? //這個(gè)時(shí)間點(diǎn)與本地系統(tǒng)的時(shí)區(qū)無關(guān)

而 正因?yàn)槠渑c時(shí)區(qū)的無關(guān)性,才使得我們的存儲數(shù)據(jù)(時(shí)間)是一致的(時(shí)區(qū)一致性)。一般的我們將now存儲于數(shù)據(jù)庫中,當(dāng)我們需要展現(xiàn)數(shù)據(jù)時(shí),將 now格式化成想要的格式,如:2011-11-19 14:12:23。而這個(gè)功能一般交由java.text.DateFormat來實(shí)現(xiàn)。例如:

SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
String?snow?=?sdf.format(now);??//?2011-11-19?14:12:23

?

我們發(fā)現(xiàn)snow是帶時(shí)間(14:12:23)的字符串,我們不禁要問,該時(shí)間(14:12:23)是哪個(gè)時(shí)區(qū)的時(shí)間?默認(rèn)情況 下,SimpleDateFormat 取得本地系統(tǒng)的時(shí)區(qū)(我的時(shí)區(qū)為GMT+8北京),然后按照pattern("yyyy-MM-dd HH:mm:ss")格式化now,此時(shí)輸出的就是GMT+8區(qū)的時(shí)間了。如果想支持國際化時(shí)間,則先指定時(shí)區(qū),然后再格式化date數(shù)據(jù)。例如:

?

SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");

sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
String?snow?=?sdf.format(now);??//?2011-11-19?14:12:23

另外,你可以通過如下代碼修改本地時(shí)區(qū)信息:

TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));

?

java.util.Calendar類也代表時(shí)間點(diǎn),但它為Date的facade工具類,提供了很多對時(shí)間點(diǎn)到年、月、日、時(shí)、分、秒、星期等的轉(zhuǎn)換(計(jì)算)的方便方法。

?

Calendar?calendar?=?Calendar.getInstance(timezone);?

Date?d?=?calendar.getTime();

Calendar 的計(jì)算也是基于時(shí)區(qū)的,例如:同一個(gè)date在不同時(shí)區(qū)下的小時(shí)數(shù)是不一樣的。但是calendar.getTime();返回的date是沒有時(shí)區(qū)的,因?yàn)樗荄ate類型的。例如:

?

public?static?void?main(String[]?args)?throws?InterruptedException?{
??Calendar?calendar1?=?Calendar
????.getInstance(TimeZone.getTimeZone("GMT+8"));
??Calendar?calendar2?=?Calendar
????.getInstance(TimeZone.getTimeZone("GMT+1"));

??System.out.println("Millis?=?"?+?calendar1.getTimeInMillis());
??System.out.println("Millis?=?"?+?calendar2.getTimeInMillis());

??System.out.println("hour?=?"?+?calendar1.get(Calendar.HOUR));
??System.out.println("hour?=?"?+?calendar2.get(Calendar.HOUR));

??System.out.println("date?=?"?+?calendar1.getTime());
??System.out.println("date?=?"?+?calendar2.getTime());
?}

輸出:

Millis?=?1358614681203
Millis?=?1358614681203
hour?=?3
hour?=?8
date?=?Thu?Nov?19?15:11:21?CST?2011
date?=?Thu?Nov?19?15:11:21?CST?2011

轉(zhuǎn)載于:https://www.cnblogs.com/cyblog-eastcn/p/4876512.html

總結(jié)

以上是生活随笔為你收集整理的Date和TimeZone的关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。