2015-09-23 35 views
1

我有這樣的片段在這裏:Java日曆添加小時問題越來越時間以毫秒

Calendar cal = Calendar.getInstance(); 
    System.out.println("calendar " + cal.getTime()); 
    System.out.println("ms calendar" + cal.getTime().getTime()); 
    long ms0 = cal.getTime().getTime(); 
    cal.add(Calendar.HOUR, -1); 
    System.out.println("calendar one hour less " + cal.getTime()); 
    System.out.println("ms calendar one hour less " + cal.getTime().getTime()); 
    long ms1 = cal.getTime().getTime(); 
    cal.setTimeInMillis(t0-t1); 
    System.out.println("result " + cal.getTime()); 

我期待只有一個小時,兩個日期之間的差異。 而不是我得到這個奇怪的結果:

calendar Wed Sep 23 09:51:36 CEST 2015 
ms calendar 1442994696681 
calendar one hour less Wed Sep 23 08:51:36 CEST 2015 
ms calendar one hour less 1442991096681 
result Thu Jan 01 02:00:00 CET 1970 

我得到什麼錯誤? 我應該如何在日期中看到一小時的差異?

任何形式的幫助將不勝感激。 在此先感謝。

+1

你_do_得到不同毫米:144299 ** 4696681 ** vs 144299 ** 1096681 **。 – Tunaki

+1

你應該在問一個不需要回答的問題前兩次查看你的問題 –

+0

嗯,我確實有問題。我編輯了這個問題...... – elcadro

回答

5
System.out.println("milis restantes:"+ (ms0-ms1)); 

導致:

milis restantes:3600000 

你的程序正在按所需

編輯:
隨着你編輯的問題,你要明白,日曆開始從算milis時代,女巫在這種情況下是: Thu Jan 01 01:00:00 CET 1970 So添加一個小時在此日期將導致 週四1月1 02:00:00 CET 1970年

如果您要檢查這種行爲:

cal.setTimeInMillis(0); 
    System.out.println("result new Calendar " + cal.getTime()); 

結果:

result new Calendar Thu Jan 01 01:00:00 CET 1970 
+0

感謝您的幫助。其實我的問題有點不同。請看看編輯過的問題... – elcadro