0

いくつかの開始日と終了日が記載された請求書があるとします。

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 か月離れていないなど)。

4

2 に答える 2

1

1 つの期間の開始日から 1 日を引いた日付が、前の期間の終了日と等しいことを確認してみませんか?

LocalDate endDate1, startDate2...

startDate2.minusDays(1).equals(endDate1)
于 2013-10-18T19:44:15.977 に答える