在使用Eclipse編程時遇到關於日期的問題,如下。
一、使用setTime(Date)給Calendar賦值:
當使用如下方法給Calendar賦值時,得到的結果為:"cal.getTime().toString();"= "Thu Jan 01 08:01:00 CST 1970" .
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sDateFormat.parse("1970-01-01 08:01:00"); cal.setTime(date);
若將第一行代碼改為:
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
得到的結果仍為:"cal.getTime().toString();"= "Thu Jan 01 08:01:00 CST 1970" . (時區改變了,為什麼getTime()的結果一樣?)
二、使用set(int,int,int,int,int,int)給Calendar賦值:
當使用如下方法給Calendar賦值時,得到的結果為"cal.getTime().toString();"= "Thu Jan 01 16:01:00 CST 1970" . (時區設定為格林尼治時間,所以getTime得到的顯示時間是在格林尼治時間的基礎上加8個小時,變為中國標準時間。)
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));cal.set(1970,0,1,8,1,0);
若將第一行代碼改為:
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
得到的結果為:"cal.getTime().toString();"= "Thu Jan 01 08:01:00 CST 1970" .(時區設定為中國時區,getTime()得到的時間跟設定的時間一致。)
疑問:
為什麼使用Calendar.setTime(Date)時,無論將TimeZone設定為GMT、GMT+8或是其它,cal.getTime()的結果都一樣?而使用Calendar.set(int,int,int,int,int,int),getTime()的結果卻是符合常理的。