两个时区不同的java日期之间经过的天数
我有两次约会,但一次是CET,另一次是CEST两个时区不同的java日期之间经过的天数,java,excel,date,time,timezone,Java,Excel,Date,Time,Timezone,我有两次约会,但一次是CET,另一次是CEST Calendar calFrom = Calendar.getInstance(); calFrom.set( 2013, 2, 20,0,0,0); Calendar calTo = Calendar.getInstance(); calTo.set( 2013, 3, 5,0,0,0); long daysPassed= (calTo.getTime
Calendar calFrom = Calendar.getInstance();
calFrom.set( 2013, 2, 20,0,0,0);
Calendar calTo = Calendar.getInstance();
calTo.set( 2013, 3, 5,0,0,0);
long daysPassed= (calTo.getTime().getTime() - calFrom.getTime().getTime()) / (1000 * 60 * 60 * 24);
System.out.println("calFrom: " + calFrom.getTime());
System.out.println("calTo: " + calTo.getTime());
System.out.println("daysPassed: " + daysPassed);
结果显示:
calFrom: Wed Mar 20 00:00:00 CET 2013
calTo: Fri Apr 05 00:00:00 CEST 2013
daysPassed: 15
然而微软excel表示,这两天的差异是16
如何能够像Excel一样计算过去的天数?JodaTime似乎可以处理这个问题:
您是说Java计算忽略了时区偏移吗?Javadoc说:“返回一个日期对象,表示这个日历的时间值(与历元的毫秒偏移量)。”。“这可能就是为什么它从历元中获取时间,而不考虑时区的原因。在Java8中,有一个新的日期时间API,取代了以前JDK中现有的日历和日期API。请参见此处:特别是“持续时间”部分。我自己从来没有试过。如果这可以解决您的问题,请分享。谢谢您的回复,我知道Java 8有一个新的日期API,但在我的公司我们还不能使用Java 8:)