こんばんは。
急に涼しくなっていまいち体調が悪いです。
しかもまた暑くなるとか・・・無理・・・。
さて、Java8でDate/Time APIが刷新されて使いやすくなりました。
ローカライズされた日付を扱いたいときにはLocalDateクラスを使います。
parseメソッドを使ってLocalDateを作成するとこうなります。
LocalDate date = LocalDate.parse("2016-09-22");
ちゃんとゼロ埋めをしないと例外が発生してしまいます。
LocalDate date = LocalDate.parse("2016-9-22"); // DateTimeParseException
ofメソッドを使うとint型の引数からLocalDateを作成できます。
LocalDate date = LocalDate.of(2016, 9, 22);
こっちもせっかくだから0埋めしてあげると・・・
LocalDate date = LocalDate.of(2016, 09, 22);
こんなエラーが出ます。
整数09が大きすぎます
えっ。
ちなみに1月~7月まではうまくいきます。
なぜこんなことになるかというと、int型は先頭に0をつけると8進数になります。
(ちなみに0xをつけると16進数に、0bをつけると2進数になります。)
なので、
System.out.println(011);
の出力結果は
9
になります。
この仕様ややこしくない…?