java - 乔达 : how to get months and days between two dates

标签 java android jodatime

我认为我在这里遗漏了一些微妙之处,因为我读到的所有内容都表明这应该有效。我需要获取 Android 中两个日期之间的月份和天数。也就是说,有多少整月加上任何额外的天数。我需要它作为数字输出,而不是打印字符串。这是我使用 Joda 所做的事情:

void method(DateTime begin, DateTime end) {
    Period period = Period period = new Period(begin, end);
    final int months = period.getMonths();
    final int additionalDays = period.getDays();

问题是additionalDays始终为零。例如,2015 年 7 月 1 日到 2015 年 11 月 29 日应该是 4 个月零 29 天,但我得到的是 4 个月零 0 天。

最佳答案

来自documentation如果不支持,Period.getDays() 将返回 0。我不确定为什么不支持这种情况,但我想提供一种不同的方法:使用 DaysMonths 类及其 monthsBetween()daysBetween() 方法。请注意,您还必须减去之间的月份:

// Get months
int months = Months.monthsBetween(begin, end).getMonths();
// Subtract this number of months from the end date so we can calculate days
DateTime newEnd = end.minusMonths(months);
// Get days
int days = Days.daysBetween(begin, newEnd).getDays();

如果您不在中间执行此减法,您​​将得到不正确的结果,因为您将得到所有天的结果。

关于java - 乔达 : how to get months and days between two dates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33614185/

相关文章:

android - android中通过https返回网络错误的React-native POST请求

java - 为什么 Joda-Time-2.3 返回不正确的差异?

java - 具有动态名称的 Gson (Android)

java - 询问用户名并检查长度是否在 3 到 256 个字符之间

android - 无法在 gradle 上解析符号 MavenDeployment

android - 将整个公告替换为“启用对讲时双击激活

java - 数据库会因为繁忙而忽略传入请求吗?

java - 为什么Java不支持C中的clrscr之类的函数?

java - 将 java.lang.double 转换为 org.joda.time.Instant

java - 导出 .apk 时出现 Joda 时间和 ProGuard 错误