【问题标题】:Days passed between two java date with different timezone具有不同时区的两个 java 日期之间经过的天数
【发布时间】:2014-05-26 15:14:51
【问题描述】:

我有两个日期,但一个是 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().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 一样计算过去的天数?

【问题讨论】:

  • 你是说Java计算忽略时区偏移? Calendar.getTime() Javadoc 说:“返回一个 Date 对象,表示此日历的时间值(与 Epoch 的毫秒偏移量”)。”这可能是原因,即它从 Epoch 获取时间,而不考虑时区。在 Java 中8、有一个新的Date-Time API,取代了以前JDK中现有的Calendar和Date API。见这里:oracle.com/technetwork/articles/java/…尤其是'Duration'部分。我自己从来没有尝试过。如果这能解决你的问题,请分享它。
  • 感谢您的回复,我知道 Java 8 有一个新的日期 API,但在我的公司我们还不能使用 Java 8。:)

标签: java excel date time timezone


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多