在Scala中使用java.time時,我遇到了一個奇怪的行爲。我想計算這樣的兩個日期之間的月份數:在兩個日期之間計算月份的java錯誤
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
這是一個錯誤還是我有這一切都錯了?
org.joda.time工程,我希望它:
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:我不知道它是否確實如此,但我預計一個月可能會有不同的天數。 – cperriard
如果它打破規範,這是一個錯誤;如果沒有,那麼它只會打破你的(合理的)期望。 –