假设我有一些账单有一些开始日期和结束日期。
Mar 10 to Apr 9
Apr 10 to May 9
May 10 to Jun 9
我要检查的业务规则是
for any given bill, the previous bill is exactly one period behind
例如,3 月 10 日到 4 月 9 日相隔大约一个月,所以我用它来检查任何两个连续的账单开始日期(4 月 10 日与 3 月 10 日)相隔大约一个月。
现在我遇到的问题是获取期间的长度。例如,假设我有以下数据集
Jan 1 to Jan 31
Feb 1 to Feb 28
Mar 1 to Mar 31
我正在使用 JodaTime 库,所以我说类似
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy");
DateTime date1 = formatter.parseDateTime("01/01/2013");
DateTime date2 = formatter.parseDateTime("31/01/2013");
System.out.println(Months.monthsBetween(date1, date2).toPeriod().getMonths());
并且返回 0,这是正确的,但没有用。
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy");
DateTime date1 = formatter.parseDateTime("31/01/2013");
DateTime date2 = formatter.parseDateTime("01/02/2013");
System.out.println(Months.monthsBetween(date1, date2).toPeriod().getMonths());
即使相隔一天,它也会返回 1。
有什么更好的方法来做到这一点?我可以检查天差,但由于计费周期是以月为单位指定的,我希望任何输出都是一致的(例如:这些账单不是相隔 x 个月等)