Scalaでjava.timeを使用すると、私は奇妙な動作を経験しました。私はこのような2つの日付間の月数を計算したいと思います:Java日付のバグ2日付間の月の計算
import java.time._
Period.between(LocalDate.parse("2015-03-31"), LocalDate.parse("2015-04-30"))
// java.time.Period = P30D
// I would expect java.time.Period = P1M
Period.between(LocalDate.parse("2015-03-31"), LocalDate.parse("2015-05-01"))
// java.time.Period = P1M1D
これはバグですか、それとも間違っていますか?
import org.joda.time.DateTime
import org.joda.time.Months
Months.monthsBetween(new DateTime().withDate(2015, 3, 31), new DateTime().withDate(2015, 4, 30))
//org.joda.time.Months = P1M
java.time.LocalDateそれに数ヶ月を追加正常に動作します:
java.time.LocalDate.parse("2015-03-31").plusMonths(1)
// java.time.LocalDate = 2015-04-30
明らかに仕様が破られていますか? –
@MarkoTopolnik:もしそうなら、私は分かりませんが、1ヶ月の日数が異なることが予想されます。 – cperriard
仕様を破るとバグです。そうでなければ、それはあなたの(合理的な)期待を破っただけです。 –