いくつかの開始日と終了日が記載された請求書があるとします。
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 日までは約 1 か月離れているため、それを使用して、連続する 2 つの請求開始日 (4 月 10 日と 3 月 10 日) が約 1 か月離れていることを確認します。
今私が抱えている問題は、期間の長さを取得することです。たとえば、次のデータ セットがあるとします。
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日離れているにもかかわらず、1を返します。
これを行うためのより良い方法は何ですか? 日数の違いを確認できますが、請求期間が月単位で指定されているため、一貫した出力が必要です (例: これらの請求書は x か月離れていないなど)。