【发布时间】:2020-08-09 02:42:35
【问题描述】:
如何从 Android 中的日历中获取两个选定日期的天数、月数和年数之间的差异?我们都知道,每个月有时有 30 天,有时有 31 天,而在 2 月 28 天,每隔 4 年就有 29 天。我想得到这样的结果:2 年 6 个月 24 天。
我尝试使用LocalDate 所以这是我的代码:
public void onSelectedDayChange(@NonNull CalendarView view,
final int year, final int month, final int dayOfMonth) {
textView.setText(String.valueOf(dateDiff(year,month,dayOfMonth)));
}
public Period 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);
return period;
}
我测试了代码,但我得到了错误的结果。当我用天(2020 年 2 月 5 日)测试它时,我得到了 8 天,但差异是 7 天,因为“四月”有 30 天,而对于选定的日子(2020 年 2 月 7 日),我得到了 2 个月零 8 天或正确答案是2个月零7天。 我试着先得到一个正确的结果,如果有一个函数或计算公式来解决这个错误的结果,这将对我有所帮助。
最后我每次都得到结果,比如 (P2M8D),意思是 2 个月零 8 天,或者例如 (P7D),意思是 7 天,所以我怎样才能将这个文本更改为可以理解的文本,比如 2 个月零 8天或 7 天,就像 2 个示例一样,因为我发现结果有问题,因为我们混合了数字和字符。
【问题讨论】:
-
你的意思是我尝试使用
Days.between()方法?如果是的话,我认为这会使我的问题更加复杂,因为结果很长,所以我通常会在数月内遇到问题 -
你试过你的调试器了吗?
-
注意你的命名——为了清楚起见,遵循 Java 命名约定。变量应以小写字母开头。我建议修复此处显示的代码,以便其他人阅读。
标签: java android android-studio calendar localdate