LoginSignup
5
5

More than 5 years have passed since last update.

1ヶ月後の1ヶ月前は元の日付にならないことがある

Posted at

Java SE8の日付APIを触っていたらふと思ったので試してみた。重箱の隅をつつくような話。

2016-01-31という日付について、「1ヶ月後の1ヶ月前」「1ヶ月前の1ヶ月後」という演算をそれぞれ施すと結果が異なる。

LocalDate.of(2016, 1, 31).plusMonths(1).minusMonths(1); // 2016-01-29
LocalDate.of(2016, 1, 31).plusMonths(1).minusMonths(1); // 2016-01-31

1月と2月では月末の日が異なり(31日と28日)、12月と1月では月末の日が一致するので(どっちも31日)このようなことが起こる。

似たような話でうるう年を利用すると。

LocalDate.of(2016, 2, 29).plusYears(1).minusYears(1); // 2016-02-28
LocalDate.of(2016, 2, 29).plusYears(4).minusYears(4); // 2016-02-29

どちらも「n年後のn年前」という演算を施しているが、n=1とn=4では結果が異なる。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5