时间:2010-07-25 14:07:37

标签: java jodatime datediff

5 个答案:

答案 0 :(得分:19)

答案 1 :(得分:12)

答案 2 :(得分:4)

答案 3 :(得分:3)

答案 4 :(得分:2)

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

LocalDate

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

时区

您的代码忽略了时区的关键问题。在尝试确定“今天”时,即使对于LocalDate,时区也很重要。你想今天在蒙特利尔或巴黎约会吗?新的一天早些时候在巴黎开始了。省略时区时,将获得JVM的当前默认时区。

Joda-Time Can Parse

此外,让Joda-Time进行解析。无需使用java.util.Date& .Calendar。 Joda-time的格式化字符几乎与java.util.Date相同,但并不完全如此,请咨询doc。在这种情况下,它是相同的。

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 ) );