【问题标题】:Difference in Days between two Java dates?两个Java日期之间的天数差异?
【发布时间】:2011-03-20 18:11:40
【问题描述】:

我想了解两个 Java Date 对象之间的区别。我用过 Joda-Time 库。但问题是我得到的天数差异大于实际天数的差异。

这是我的代码 sn-p:

DateFormat formatter = new SimpleDateFormat("mm/dd/yyyy");

Date someDate=new Date();
Date today = Calendar.getInstance().getTime();

try     {
    someDate = formatter.parse("06/22/2010");
}
catch(ParseException pe)    {
    System.out.println("Parser Exception");
}

int days = Days.daysBetween(new DateTime(someDate), new DateTime(today)).getDays();

System.out.println(" Days Between " + someDate + " : " + today + " - " + days);

这是我的输出:

 Days Between Fri Jan 22 00:06:00 IST 2010 : Sun Jul 25 19:27:01 IST 2010 - 184

在这里,为什么将“06/22/2010”设置为 Jan 22?有没有人面临类似的问题?

帮助我的朋友..提前谢谢..

【问题讨论】:

    标签: java jodatime datediff


    【解决方案1】:

    其他答案正确解决了您的具体问题。

    LocalDate

    但还有一个更大的解决方案。如果您只从日期开始,没有时间和时区,那么您应该使用LocalDate 类而不是DateTime

    时区

    您的代码忽略了时区的关键问题。在尝试确定“今天”时,时区甚至对于 LocalDate 也很重要。你想今天在蒙特利尔还是在巴黎约会。新的一天在巴黎更早地黎明。当您省略时区时,您将获得 JVM 当前的默认时区。

    Joda-Time 可以解析

    此外,让 Joda-Time 进行解析。根本不需要使用 java.util.Date & .Calendar。 Joda-time 的格式化字符与 java.util.Date 几乎相同,但不完全一样,请务必查阅文档。在这种情况下,它是相同的。

    DateTimeFormatter formatter = DateTimeFormat.forPattern( "MM/dd/yyyy" );
    LocalDate past = formatter.parseLocalDate( "06/22/2010" );
    DateTimeZone = DateTimeZone.forID( "America/Montreal" ): // match time zone intended for that input string.
    int days = Days.daysBetween( past, LocalDate.now( timeZone ) );
    

    【讨论】:

      【解决方案2】:

      似乎mm 指的是分钟,而不是月,即MM。请查看here 以查看合适的字母列表:)

      【讨论】:

      • @ShahzadImam:链接现在指向新版本的 JavaDocs。
      【解决方案3】:

      您的图案有轻微缺陷。 mm 被解析为分钟数,您正在寻找MM,它是一年中的月份

      【讨论】:

        【解决方案4】:

        mm => 分钟,而不是几个月 - 你需要几个月的 MM - 这将解决你的 Jan 问题!

        【讨论】:

          【解决方案5】:

          月份是 MM

          在你的情况下:

          DateFormat 格式化程序 = 新 SimpleDateFormat("MM/dd/yyyy");

          【讨论】:

            猜你喜欢
            • 2011-03-19
            • 1970-01-01
            • 2013-07-24
            • 2010-12-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-24
            • 2011-06-24
            相关资源
            最近更新 更多