【发布时间】:2020-08-09 07:20:42
【问题描述】:
我尝试从日历中获取当前日期和第二个选定日期之间的正确时差。
在这种情况下,我使用 LocalDate 和 3 种方法 getDays() getMonths() getYears() 来获取日期和月份以及年份:
public int dateDiff(int year,int month,int day) {
final int Day = c.get(Calendar.DAY_OF_MONTH);
final int Month = c.get(Calendar.MONTH);
final int Year = c.get(Calendar.YEAR);
LocalDate localDate1 = LocalDate.of(year,month,day);
LocalDate localDate2 = LocalDate.of(Year,Month,Day);
Period period = Period.between(localDate2,localDate1);
int dayDiff = period.getDays();
return dayDiff;
}
public void onSelectedDayChange(@NonNull CalendarView view, final int year, final int month, final int dayOfMonth) {
textView.setText(""+dateDiff(year, month, day));
}
但是每次我测试在 textView "0" 中得到的代码时 我尝试查看变量“period”的值,我得到了(P2M8D 'this result got in my example'),这意味着变量 period 计算了天数和方法中的问题之间的差异。 我怎么解决这个问题?
【问题讨论】:
-
打开调试器并检查值 mate。
-
我建议你不要使用
Calendar类,因为它已经过时了。您已经可以访问 Java 8 日期和时间 API(在java.time包中),因此您应该使用它们。 -
我使用
Calendar,因为我的项目中需要日历。用户点击他想要的日期并写一个事件 -
你能不能用
LocalDate.now()替换当前的日期逻辑,然后试试。 -
period.getDays()可能不是你想要的,使用ChronoUnit.DAYS.between见stackoverflow.com/questions/30833582/…。你仍然不应该得到0。您没有向我们展示的代码中还有一些其他问题。
标签: java android localdate period