假設我有一些賬單有一些開始日期和結束日期。比較日期期間和日期期限長度
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個月等)
那麼沒有一天沒有結帳的條件呢?什麼是'toPeriod()'? – clwhisk
@clwhisk抱歉,你能提供一個你的意思嗎? – MxyL
我想我明白你的意思。例如,如果一個時期是1月1日到1月25日,下一個時期是2月1日到2月25日,並且它們仍然是「有效」的,因爲中間的失蹤日期不計算在內。 – MxyL