奇怪的java日期

來源:互聯網
上載者:User

在使用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()的結果卻是符合常理的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.