【Date and Time API】Java 8徹底再入門【ラムダ式ハンズオン】(大阪,7/11)に参加してきました

【Date and Time API】Java 8徹底再入門【ラムダ式ハンズオン】(大阪,7/11) - connpassに参加してきました。

Date and Time API

@さんによる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 / Lambda — Bitbucketよりcloneして使わせていただきました。
説明をお聞きしながら、実装すると本当に理解が深まります!
途中で時間を測定するサンプルで、参加者の方々のPCによって異なった時間になることがわかって興味深かったです。

最後に

最後にいつも会場を提供していただいている楽天株式会社様には感謝しています。
いろいろ準備をしてくださったスタッフの方々、ありがとうございます!!!
とても有意義で楽しい時間を過ごせました。