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