【Date and Time API】Java 8徹底再入門【ラムダ式ハンズオン】(大阪,7/11)に参加してきました
【Date and Time API】Java 8徹底再入門【ラムダ式ハンズオン】(大阪,7/11) - connpassに参加してきました。
Date and Time API
@khasunumaさんによるDate and Time APIのお話です。Javaの実装だけでなく時間に関することもとても勉強になりました。
スライドはここIntroduction to Date and Time API, 3rd Ed.です。
ちょっと気になる以下の3パターンを実装してみましたが、、、
- Fixed Clockのサンプル
同じ時刻になることが確認できました。テストで使うのに便利なことを認識しました。
void test2(){ final ZoneId losZone = ZoneId.of("America/Los_Angeles"); Clock clock = Clock.fixed(Instant.now(), losZone); LocalTime losNow = LocalTime.now(clock); System.out.println("LocalTime --->" + losNow); ZonedDateTime losNow2 = ZonedDateTime.now(clock); System.out.println("ZonedDateTime--->" + losNow2); OffsetTime losNow3 = OffsetTime.now(clock); System.out.println("OffsetTime --->" + losNow3); }
- DateTimeFormatterでStrictを指定してのParse
Gなしのyyyyでもエラーにならない?実装方法が間違っているのかな?
void test3() { DateTimeFormatterBuilder bYYYY = new DateTimeFormatterBuilder(); DateTimeFormatter formatterYYYY = bYYYY.appendPattern("yyyy:MM:dd").parseStrict().toFormatter(); System.out.println(" yyyy:MM:dd --->" + formatterYYYY.parse("2015:07:12")); DateTimeFormatterBuilder buuuu = new DateTimeFormatterBuilder(); DateTimeFormatter formatteruuuu = buuuu.appendPattern("uuuu:MM:dd").parseStrict().toFormatter(); System.out.println(" uuuu:MM:dd --->" + formatteruuuu.parse("2015:07:12")); DateTimeFormatterBuilder bG = new DateTimeFormatterBuilder(); DateTimeFormatter formatterG = bG.appendPattern("Gyyyy:MM:dd").parseStrict().toFormatter(); System.out.println(" Gyyyy:MM:dd --->" + formatterG.parse("AD2015:07:12")); DateTimeFormatterBuilder bGGGG = new DateTimeFormatterBuilder(); DateTimeFormatter formatterGGGG = bGGGG.appendPattern("GGGGyyyy:MM:dd").parseStrict().toFormatter(); System.out.println("GGGGyyyy:MM:dd --->" + formatterGGGG.parse("Anno Domini2015:07:12")); }
- DateTimeFormatterでStrictを指定してのFormat
ここでもGなしのyyyyでもエラーにならない?やっぱりよく理解できていないようです、、、(汗)
void test4(){ LocalDate now = LocalDate.now(); DateTimeFormatter formatterYYYY = DateTimeFormatter.ofPattern("yyyy:MM:dd").withResolverStyle(ResolverStyle.STRICT); System.out.println(" yyyy:MM:dd --->" + formatterYYYY.format(now)); DateTimeFormatter formatteruuuu = DateTimeFormatter.ofPattern("uuuu:MM:dd").withResolverStyle(ResolverStyle.STRICT); System.out.println(" uuuu:MM:dd --->" + formatteruuuu.format(now)); DateTimeFormatter formatterG = DateTimeFormatter.ofPattern("Gyyyy:MM:dd").withResolverStyle(ResolverStyle.STRICT); System.out.println(" Gyyyy:MM:dd --->" + formatterG.format(now)); DateTimeFormatter formatterGGGG = DateTimeFormatter.ofPattern("GGGGyyyy:MM:dd").withResolverStyle(ResolverStyle.STRICT); System.out.println("GGGGyyyy:MM:dd --->" + formatterGGGG.format(now)); }
Lambdaハンズオン
@bitter_foxさんによるハンズオンです。資料も説明もわかりやすくて楽しく実装できました。
資料はここbitter_fox / Lambda — Bitbucketよりcloneして使わせていただきました。
説明をお聞きしながら、実装すると本当に理解が深まります!
途中で時間を測定するサンプルで、参加者の方々のPCによって異なった時間になることがわかって興味深かったです。