GregorianCalendar的一個日期正在不一致:獲取從一個GregorianCalendar
Calendar cal = new GregorianCalendar(2000, 0, 1);
long testCalOne = cal.getTimeInMillis();
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
long testCalTwo = cal.getTimeInMillis();
Calendar cal2 = new GregorianCalendar(2000, 0, 1);
cal2.setTimeZone(TimeZone.getTimeZone("UTC"));
long testCalThree = cal2.getTimeInMillis();
System.out.println(testCalOne + ", " + testCalTwo + ", " + testCalThree);
結果
946681200000, 946681200000, 946684800000
這分別表示2000-01-01午夜GMT + 1,GMT + 1和UTC 。我的時區是相對於UTC的+1小時。
這裏的問題是,getTimeInMillis應該返回自1970-01-01以來的UTC毫秒數。只有testCalThree是正確的。
另一個問題是setTimeZone看起來不工作,這取決於我之前是否調用了getTimeInMillis。
我的目標是將我從其他代碼接收的日曆作爲參數,並獲取UTC(java.util)日期以供進一步使用。
如果您想保持理智,請切換到JodaTime或Java8新的日期/時間API。 – lexicore
爲什麼還要使用'Calendar'? (沒有違法) – Spotted
不是我的代碼,我只是從它的參數。 – Juryt