【Javasilver】難題学習(DateTimeFormatterクラス)
皆さんこんばんは!
本日はかなり暑かったですね^^;
熱中症や脱水症状には気をつけてくださいね。
それでは昨日の復習です。
LocalDateクラスやLocalDateTimeクラスで使用する
parseメソッドではどんな文字列にするかを指定するフォーマッターを
引数に受け取るものでした。
使用例:LocalDate.parse("2021-01-01",DateTimeFormatter.ISO_DATE)
ここで使用するDateTimeFormatterクラスについて本日学習していきます。
ofPatternメソッド
ofPatternメソッドを使用して任意のデータに変えることができます
LocalDate.parse("2021-01-01",DateTimeFormatter.ofPattern("yyyy/MM/dd");
とすることで2021-01-01という文字列を
2021/01/01という形に変換することができます。
定数
先程のofPatternメソッドで自ら作成した("yyyy/MM/dd")と毎回定義するのは大変です。変わりにDateTimeFormatterではパターン文字の書式を毎回作らなくてもいいように
定数が定義されています。それの定数を紹介していこうと思います。
代表的な定数(JavaSilver)
・BASIC_ISO_DATE 例:20210101
・ISO_ZONED_DATE_TIME 例:2021-01-01 T00:00:00+09:00[Asia/Tokyo]
・ISO_INSTANT 例:2021-01-01 T01:00:00Z
・ISO_DATE_TIME 例:2021-01-01 T00:00:00
・DATE_TIME 例:06:00:00.123
など複数あります。
BASIC_ISO_DATEは日付の区切り記号がない年月日を表す書式になっています。
ISO_ZONE_TIME、ISO_INSTANTはゾーン付きで時刻を表したいときに使用できます。
ISO_DATE_TIMEは年月日に追加して時刻を表すことができ、
DATE_TIMEは時刻を表す書式となっています
これらの使用方法は、先程紹介した("yyyy/MM/dd")などの箇所に
DatetimeFormatter.ISO_DATE_TIMEなどの書式で入れると
自動的に変換してくれます。
しかし、年月日までしか文字列として用意していないのに
時刻までを指定するものを定義すると例外がスローされるので
形を合わせるように工夫していきましょう。
それでは、みなさん金曜日頑張りましょう!!
(つ∀-)オヤスミー