答案 0 :(得分:19)
答案 1 :(得分:12)
答案 2 :(得分:4)
答案 3 :(得分:3)
答案 4 :(得分:2)
其他答案正确解决了您的具体问题。
LocalDate
但是有一个更大的解决方案。如果您只从日期,没有时间和没有时区开始,那么您应该使用LocalDate
类而不是DateTime
。
您的代码忽略了时区的关键问题。在尝试确定“今天”时,即使对于LocalDate,时区也很重要。你想今天在蒙特利尔或巴黎约会吗?新的一天早些时候在巴黎开始了。省略时区时,将获得JVM的当前默认时区。
此外,让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 ) );