Date和TimeZone的关系
java2平臺為我們提供了豐富的日期時間API。如java.util.Date;java.util.calendar;java.text.DateFormat等。那么它們之間有什么關系呢?
首先,java.util.Date代表一個時間點,其值為距公元1970年1月1日 00:00:00的毫秒數。所以它是沒有時區和Locale概念的。java通過如下形式取得當前時間點:
Date now = new Date();? //這個時間點與本地系統的時區無關
而 正因為其與時區的無關性,才使得我們的存儲數據(時間)是一致的(時區一致性)。一般的我們將now存儲于數據庫中,當我們需要展現數據時,將 now格式化成想要的格式,如:2011-11-19 14:12:23。而這個功能一般交由java.text.DateFormat來實現。例如:
SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");String?snow?=?sdf.format(now);??//?2011-11-19?14:12:23
?
我們發現snow是帶時間(14:12:23)的字符串,我們不禁要問,該時間(14:12:23)是哪個時區的時間?默認情況 下,SimpleDateFormat 取得本地系統的時區(我的時區為GMT+8北京),然后按照pattern("yyyy-MM-dd HH:mm:ss")格式化now,此時輸出的就是GMT+8區的時間了。如果想支持國際化時間,則先指定時區,然后再格式化date數據。例如:
?
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
另外,你可以通過如下代碼修改本地時區信息:
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));?
java.util.Calendar類也代表時間點,但它為Date的facade工具類,提供了很多對時間點到年、月、日、時、分、秒、星期等的轉換(計算)的方便方法。
?
Calendar?calendar?=?Calendar.getInstance(timezone);?Date?d?=?calendar.getTime();
Calendar 的計算也是基于時區的,例如:同一個date在不同時區下的小時數是不一樣的。但是calendar.getTime();返回的date是沒有時區的,因為它是Date類型的。例如:
?
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?=?1358614681203Millis?=?1358614681203
hour?=?3
hour?=?8
date?=?Thu?Nov?19?15:11:21?CST?2011
date?=?Thu?Nov?19?15:11:21?CST?2011
轉載于:https://www.cnblogs.com/cyblog-eastcn/p/4876512.html
總結
以上是生活随笔為你收集整理的Date和TimeZone的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么利用人工智能技术提升泰山风景区的旅游
- 下一篇: 2015年10月15日学习html基础笔