Kotlin で当日の日付を取得しようと java.util.Date を使っていたのですが、それはもう時代遅れだという指摘を食らったので java.time パッケージを利用することにしました。
Java8 から登場した java.time パッケージ、早速紹介していきたいと思います。
java.util.Date
Java8 以前なら以下のようなコードが主流で、もちろん今でも Kotlin で動作します。
1 2 3 4 5 6 | import java.util.Date import java.text.SimpleDateFormat val s = SimpleDateFormat("yyyy-MM-dd").format(Date()) println(s) |
この記事を書いているのは、2018年9月5日2018年9月6日なので結果は以下の通り。
2018-09-06
java.time.LocalDate
では、早速新しいパッケージを使ってみましょう。
1 2 3 4 5 6 | import java.time.LocalDate import java.time.format.DateTimeFormatter val s = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) println(s) |
フォーマッタは DateTimeFormatter のみですが、日付や時刻を扱うパッケージは個別になっています。
java.time.LocalDate
java.time.LocalTime
java.time.LocalDateTime
日付と時刻を表示
では、「日付」「時刻」「日付&時刻」を表示してみます。
1 2 3 4 5 6 7 8 9 10 11 12 | import java.time.LocalDate import java.time.LocalTime import java.time.LocalDateTime import java.time.format.DateTimeFormatter val s1 = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) val s2 = LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss")) val s3 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) println(s1) println(s2) println(s3) |
結果は以下の通り。
2018-09-06
01:15:42
2018-09-06 01:15:42
まとめ
java.time パッケージを利用した日付取得について紹介しました。
途中、今日は「9月5日」だと説明していましたが、よくよく考えるとこの記事を書いているのは「9月6日」でした。
(日時の表示を9時間修正しています)
時刻表示した際に try kotlin だと UTCになるのか。・・・っと思ったのですが、タイムゾーンどうこうの話ではなくて単なる時差ですね(笑)
今回は指摘を受けたことがキッカケで調べてみましたが、java.time パッケージについては下記のサイトに詳しく扱い方がまとめられています。
こちらを先に見ておくべきでしたね。