我很難過。這對我來說沒有意義。下面的代碼:不同的長整型值會產生相同的時間
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
long lFirst = 1383460981000L;
long lSecond = 1383464581000L;
System.out.println(lFirst);
System.out.println(lSecond);
java.util.Date first = new Date(lFirst);
java.util.Date second = new Date(lSecond);
System.out.println(sdf.format(first));
System.out.println(sdf.format(second));
System.out.println(first.getTime());
System.out.println(second.getTime());
System.out.println("Diff" + (first.getTime() - second.getTime()));
System.out.println("Hours diff: " + (((float)(second.getTime()-first.getTime()))/1000f/60f/60f));
產生以下輸出:
1383460981000
1383464581000
2013-11-03 01:43:01.000
2013-11-03 01:43:01.000
1383460981000
1383464581000
Diff-3600000
Hours diff: 1.0
如何這兩個不同的長值產生完全相同的日期?我在執行從一種數據庫類型到另一種數據庫的數據遷移並驗證結果時遇到了這個問題。我無法理解我所看到的驗證失敗,所以我創建了一小段代碼來比較這些值,並且足夠肯定。雖然我願意接受我的數據庫中存在一些時區怪異現象,但在這段代碼示例中似乎沒有任何問題。
沒有必要在標題中添加主標籤。 –
該代碼不一定會生成該輸出。在我的系統中,它與DateFormats不同,以及許多其他Java庫類具有依賴於當前使用環境的方法。爲了規避您必須明確指定時區,字符集等。 – andi5
你在什麼時區,或者更確切地說,你的電腦設置了什麼時區? –