【发布时间】:2019-05-02 07:44:26
【问题描述】:
我使用下面的代码使用Joda-Time计算两个日期之间的年数、月数和天数
public void getDateDiff(View view) {
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy").withLocale(Locale.US);
DateTime startDate = null;
DateTime endDate = null;
// expected output 23...2....29
try {
startDate = formatter.parseDateTime("01/09/1995");
endDate = formatter.parseDateTime("30/11/2018");
Period period = new Period(startDate, endDate);
Log.e("No Of Years : ", period.getYears() + " Years, ");
Log.e("No Of Months : ", period.getMonths() + " Months, ");
Log.e("No Of Days : ", period.getDays() + " Days, ");
tvResult.setText(String.format("No Of Years : %d Years, \nNo Of Months : %d Months, \nNo Of Days : %d Days, ", period.getYears(), period.getMonths(), period.getDays()));
} catch (Exception e) {
e.printStackTrace();
}
}
上述代码的预期输出是(checked using this site 并在 google play store 中使用一个应用程序)
23 years, 2 months, 29 days
但我使用相同日期得到的结果低于结果
/goku.com.demo E/No Of Years :: 23 Years,
/goku.com.demo E/No Of Months :: 2 Months,
/goku.com.demo E/No Of Days :: 1 Days,
谁能帮我找出上面代码中缺少的问题
我正在使用
joda-time下面的依赖。
implementation 'joda-time:joda-time:2.9.9'
P.S.已经在下面的链接中检查过
- Getting the exact years or days or months between two joda date
- How to calculate difference between two dates in years...etc with Joda-Time
如果需要更多信息,请告诉我。提前致谢。您的努力将不胜感激。
【问题讨论】:
-
您是否尝试将
PeriodType.yearMonthDay()作为第三个参数提供给Period构造函数? -
@MCEmperor 没有你能解释更多关于
PeriodType.yearMonthDay()的信息,因为我是joda-time的新手,感谢您的回复 -
您是否考虑过从
java.time包迁移到新的 Java 日期和时间 API? -
@MCEmperor 如果您有任何使用
Java Date and Time API的解决方案,请随时回复 -
仅供参考,Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。见Tutorial by Oracle。
标签: java android jodatime android-jodatime