少し話題は遅いですが、日本時間で3月19日にJava8が正式に公開されました。
#Java8 Now Available http://t.co/QymKlAtp99
— Java (@java) 2014, 3月 18
Java8では多くのAPIが追加され、概ね使いやすくなっているのですが
新規に追加されたDate and Time APIに関しては今までの日付型と比べ使い方に癖があり使用の際に躓く方も多いと思います。
今回はメモ書きとしてJava8のDate and Time APIについて動作確認した内容を書いていきます。
型変換サンプル
java.util.Date から型変換
java.util.Date から java.time.ZonedDateTime に変換
Date d1 = new Date(); ZonedDateTime date2zd = d1.toInstant().atZone(ZoneId.systemDefault());
java.util.Date から java.time.OffsetDateTime に変換
Date d2 = new Date(); // UTC OffsetDateTime date2odt1 = d2.toInstant().atOffset(ZoneOffset.UTC); // System offset OffsetDateTime date2odt2 = d2.toInstant().atOffset(ZoneId.systemDefault().getRules().getOffset(d2.toInstant())); // System offset (一度java.time.ZonedDateTimeに変換) OffsetDateTime date2odt3 = d2.toInstant().atZone(ZoneId.systemDefault()).toOffsetDateTime();
java.util.Date から java.time.OffsetTime に変換
Date d3 = new Date(); //UTC OffsetTime date2ot1 = d3.toInstant().atOffset(ZoneOffset.UTC).toOffsetTime(); // System offset OffsetTime date2ot2 = d3.toInstant().atOffset(ZoneId.systemDefault().getRules().getOffset(d3.toInstant())).toOffsetTime(); // System offset (一度java.time.ZonedDateTimeに変換) OffsetTime date2ot3 = d3.toInstant().atZone(ZoneId.systemDefault()).toOffsetDateTime().toOffsetTime();
java.util.Date から java.time.LocalDateTime に変換
Date d4 = new Date(); LocalDateTime date2ldt1 = d4.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); // または LocalDateTime date2ldt2 = LocalDateTime.from(d4.toInstant().atZone(ZoneId.systemDefault()));
java.util.Date から java.time.LocalDate に変換
Date d5 = new Date(); LocalDate date2ld1 = d5.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); // または LocalDate date2ld2 = LocalDate.from(d5.toInstant().atZone(ZoneId.systemDefault()));
java.util.Date から java.time.LocalTime に変換
Date d6 = new Date(); LocalTime date2lt1 = d6.toInstant().atZone(ZoneId.systemDefault()).toLocalTime(); // または LocalTime date2lt2 = LocalTime.from(d6.toInstant().atZone(ZoneId.systemDefault()));
java.util.Date から java.time.chrono.JapaneseDate に変換
Date d7 = new Date(); JapaneseDate date2jd = JapaneseDate.from(d7.toInstant().atZone(ZoneId.systemDefault()));
java.time.ZonedDateTime から型変換
java.time.ZonedDateTime から java.util.Date に変換
ZonedDateTime zd1 = ZonedDateTime.now(ZoneId.systemDefault()); Date zd2date = Date.from(zd1.toInstant());
java.time.ZonedDateTime から java.time.LocalDateTime に変換
ZonedDateTime zd2 = ZonedDateTime.now(ZoneId.systemDefault()); LocalDateTime zd2ldt1 = zd2.toLocalDateTime(); // または LocalDateTime zd2ldt2 = LocalDateTime.from(zd2);
java.time.ZonedDateTime から java.time.LocalDate に変換
ZonedDateTime zd3 = ZonedDateTime.now(ZoneId.systemDefault()); LocalDate zd2ld1 = zd3.toLocalDate(); // または LocalDate zd2ld2 = LocalDate.from(zd3);
java.time.ZonedDateTime から java.time.LocalTime に変換
ZonedDateTime zd4 = ZonedDateTime.now(ZoneId.systemDefault()); LocalTime zd2lt1 = zd4.toLocalTime(); // または LocalTime zd2lt2 = LocalTime.from(zd4);
java.time.ZonedDateTime から java.time.OffsetDateTime に変換
ZonedDateTime zd5 = ZonedDateTime.now(ZoneId.systemDefault()); OffsetDateTime zd2odt1 = zd5.toOffsetDateTime(); // または OffsetDateTime zd2odt2 = OffsetDateTime.from(zd5);
java.time.ZonedDateTime から java.time.OffsetTime に変換
ZonedDateTime zd6 = ZonedDateTime.now(ZoneId.systemDefault()); OffsetTime zd2ot = OffsetTime.from(zd6);
java.time.ZonedDateTime から java.time.chrono.JapaneseDate に変換
ZonedDateTime zd7 = ZonedDateTime.now(ZoneId.systemDefault()); JapaneseDate zd2jd = JapaneseDate.from(zd7);
文字列フォーマット変換サンプル
java.time.ZonedDateTime の文字列変換
// System.out.println()のメソッド参照 Consumer<Object> pl = System.out::println; //---------------------------------------------------------------------------------------------- // ZonedDateTime methods //---------------------------------------------------------------------------------------------- ZonedDateTime datetime = ZonedDateTime.now(ZoneId.systemDefault()); // Asia/Tokyo pl.accept("[getYear] 年"); pl.accept(datetime.getYear()); // 2014 pl.accept("[getMonth] 月(Month型)"); pl.accept(datetime.getMonth().name()); // APRIL pl.accept("[getMonthValue] 月"); pl.accept(datetime.getMonthValue()); // 4 pl.accept("[getDayOfMonth] 日"); pl.accept(datetime.getDayOfMonth()); // 2 pl.accept("[getDayOfWeek] 曜日(DayOfWeek型)"); pl.accept(datetime.getDayOfWeek().name()); // WEDNESDAY pl.accept("[getDayOfYear] 1/1からの経過日"); pl.accept(datetime.getDayOfYear()); // 92 pl.accept("[getHour] 時"); pl.accept(datetime.getHour()); // 19 pl.accept("[getMinute] 分"); pl.accept(datetime.getMinute()); // 37 pl.accept("[getSecond] 秒"); pl.accept(datetime.getSecond()); // 15 pl.accept("[getMillis] ミリ秒"); pl.accept(datetime.get(ChronoField.MILLI_OF_SECOND)); // 798 pl.accept("[getMicros] マイクロ秒"); pl.accept(datetime.get(ChronoField.MICRO_OF_SECOND)); // 798000 pl.accept("[getNano] ナノ秒"); pl.accept(datetime.getNano()); // 798000000 pl.accept("[The aligned day-of-week within a month] 月初から月末まで1からカウントアップして8日で1にリセットされる1~7の整数"); pl.accept(datetime.get(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)); // 2 pl.accept("[The aligned day-of-week within a year] 年初から年末まで1からカウントアップして8日で1にリセットされる1~7の整数"); pl.accept(datetime.get(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); // 1 pl.accept("[The clock-hour-of-am-pm] AM/PMを考慮した時間"); pl.accept(datetime.get(ChronoField.CLOCK_HOUR_OF_AMPM)); // 7 pl.accept("[The am-pm-of-day] 0=AM/1=PM"); pl.accept(datetime.get(ChronoField.AMPM_OF_DAY)); // 1 pl.accept("[Era] 0=紀元前(B.C.)/1=西暦(A.D.)"); pl.accept(datetime.get(ChronoField.ERA)); // 1 pl.accept("[InstantSeconds] エポック秒(Unix時間/秒) 1970-01-01T00:00Zからの経過秒"); pl.accept(datetime.toEpochSecond()); // 1396435035 pl.accept("[InstantSeconds] エポック日(Unix時間/日) 1970-01-01からの経過日"); pl.accept(datetime.getLong(ChronoField.EPOCH_DAY)); // 16162 //---------------------------------------------------------------------------------------------- // format use DateTimeFormatter Constant //---------------------------------------------------------------------------------------------- pl.accept("[toString]"); pl.accept(datetime.toString()); // 2014-04-02T19:37:15.798+09:00[Asia/Tokyo] pl.accept("[BASIC_ISO_DATE]"); pl.accept(datetime.format(DateTimeFormatter.BASIC_ISO_DATE)); // 20140402+0900 pl.accept("[ISO_LOCAL_DATE]"); pl.accept(datetime.format(DateTimeFormatter.ISO_LOCAL_DATE)); // 2014-04-02 pl.accept("[ISO_OFFSET_DATE]"); pl.accept(datetime.format(DateTimeFormatter.ISO_OFFSET_DATE)); // 2014-04-02+09:00 pl.accept("[ISO_DATE]"); pl.accept(datetime.format(DateTimeFormatter.ISO_DATE)); // 2014-04-02+09:00 pl.accept("[ISO_LOCAL_TIME]"); pl.accept(datetime.format(DateTimeFormatter.ISO_LOCAL_TIME)); // 19:37:15.798 pl.accept("[ISO_OFFSET_TIME]"); pl.accept(datetime.format(DateTimeFormatter.ISO_OFFSET_TIME)); // 19:37:15.798+09:00 pl.accept("[ISO_TIME]"); pl.accept(datetime.format(DateTimeFormatter.ISO_TIME)); // 19:37:15.798+09:00 pl.accept("[ISO_LOCAL_DATE_TIME]"); pl.accept(datetime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); // 2014-04-02T19:37:15.798 pl.accept("[ISO_OFFSET_DATE_TIME]"); pl.accept(datetime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME)); // 2014-04-02T19:37:15.798+09:00 pl.accept("[ISO_ZONED_DATE_TIME]"); pl.accept(datetime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME)); // 2014-04-02T19:37:15.798+09:00[Asia/Tokyo] pl.accept("[ISO_DATE_TIME]"); pl.accept(datetime.format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-02T19:37:15.798+09:00[Asia/Tokyo] pl.accept("[ISO_ORDINAL_DATE]"); pl.accept(datetime.format(DateTimeFormatter.ISO_ORDINAL_DATE)); // 2014-092+09:00 pl.accept("[ISO_WEEK_DATE]"); pl.accept(datetime.format(DateTimeFormatter.ISO_WEEK_DATE)); // 2014-W14-3+09:00 pl.accept("[ISO_INSTANT]"); pl.accept(datetime.format(DateTimeFormatter.ISO_INSTANT)); // 2014-04-02T10:37:15.798Z pl.accept("[RFC_1123_DATE_TIME]"); pl.accept(datetime.format(DateTimeFormatter.RFC_1123_DATE_TIME)); // Wed, 2 Apr 2014 19:37:15 +0900 //---------------------------------------------------------------------------------------------- // format use DateTimeFormatter ofLocalizedDate() //---------------------------------------------------------------------------------------------- pl.accept("[ofLocalizedDate] [DateStyle=FULL]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL))); // 2014年4月2日 pl.accept("[ofLocalizedDate] [DateStyle=MEDIUM]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM))); // 2014/04/02 pl.accept("[ofLocalizedDate] [DateStyle=SHORT]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT))); // 14/04/02 pl.accept("[ofLocalizedDate] [DateStyle=LONG]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG))); // 2014/04/02 //---------------------------------------------------------------------------------------------- // format use DateTimeFormatter ofLocalizedTime() //---------------------------------------------------------------------------------------------- pl.accept("[ofLocalizedTime] [TimeStyle=FULL]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.FULL))); // 19時37分15秒 JST pl.accept("[ofLocalizedTime] [TimeStyle=MEDIUM]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM))); // 19:37:15 pl.accept("[ofLocalizedTime] [TimeStyle=SHORT]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT))); // 19:37 pl.accept("[ofLocalizedTime] [TimeStyle=LONG]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.LONG))); // 19:37:15 JST //---------------------------------------------------------------------------------------------- // format use DateTimeFormatter ofLocalizedDateTime() //---------------------------------------------------------------------------------------------- pl.accept("[ofLocalizedDateTime] [DateTimeStyle=FULL]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL))); // 2014年4月2日 19時37分15秒 JST pl.accept("[ofLocalizedDateTime] [DateTimeStyle=MEDIUM]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM))); // 2014/04/02 19:37:15 pl.accept("[ofLocalizedDateTime] [DateTimeStyle=SHORT]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT))); // 14/04/02 19:37 pl.accept("[ofLocalizedDateTime] [DateTimeStyle=LONG]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG))); // 2014/04/02 19:37:15 JST pl.accept("[ofLocalizedDateTime] [DateStyle=FULL] [TimeStyle=FULL]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.FULL))); // 2014年4月2日 19時37分15秒 JST pl.accept("[ofLocalizedDateTime] [DateStyle=FULL] [TimeStyle=MEDIUM]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.MEDIUM))); // 2014年4月2日 19:37:15 pl.accept("[ofLocalizedDateTime] [DateStyle=FULL] [TimeStyle=SHORT]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.SHORT))); // 2014年4月2日 19:37 pl.accept("[ofLocalizedDateTime] [DateStyle=LONG] [TimeStyle=MEDIUM]"); pl.accept(datetime.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG, FormatStyle.MEDIUM))); // 2014/04/02 19:37:15 //---------------------------------------------------------------------------------------------- // format use DateTimeFormatter ofPattern() //---------------------------------------------------------------------------------------------- pl.accept("[ofPattern] era 暦:型により異なる"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("G"))); // 西暦 pl.accept(datetime.format(DateTimeFormatter.ofPattern("GGGG"))); // 西暦 pl.accept(datetime.format(DateTimeFormatter.ofPattern("GGGGG"))); // A // java.time.chrono.JapaneseDate の場合 pl.accept(JapaneseDate.now().format(DateTimeFormatter.ofPattern("G"))); // 平成 pl.accept(JapaneseDate.now().format(DateTimeFormatter.ofPattern("GGGG"))); // 平成 pl.accept(JapaneseDate.now().format(DateTimeFormatter.ofPattern("GGGGG"))); // H pl.accept("[ofPattern] year 年"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("uuuu"))); // 2014 // java.time.chrono.JapaneseDate の場合 pl.accept(JapaneseDate.now().format(DateTimeFormatter.ofPattern("uuuu"))); // 2014 pl.accept("[ofPattern] year-of-era (暦を考慮した)年"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("yyyy"))); // 2014 // java.time.chrono.JapaneseDate の場合 pl.accept(JapaneseDate.now().format(DateTimeFormatter.ofPattern("yy"))); // 26 pl.accept("[ofPattern] day-of-year 1/1からの経過日数"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("D"))); // 92 pl.accept("[ofPattern] month-of-year 月"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("M"))); // 4 pl.accept(datetime.format(DateTimeFormatter.ofPattern("MM"))); // 04 pl.accept(datetime.format(DateTimeFormatter.ofPattern("MMM"))); // 4 pl.accept(datetime.format(DateTimeFormatter.ofPattern("MMMM"))); // 4月 pl.accept(datetime.format(DateTimeFormatter.ofPattern("MMMMM"))); // A pl.accept("[ofPattern] day-of-month 日"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("d"))); // 2 pl.accept(datetime.format(DateTimeFormatter.ofPattern("dd"))); // 02 pl.accept("[ofPattern] quarter-of-year クオーター"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("Q"))); // 2 pl.accept(datetime.format(DateTimeFormatter.ofPattern("QQ"))); // 02 pl.accept(datetime.format(DateTimeFormatter.ofPattern("QQQ"))); // Q2 pl.accept(datetime.format(DateTimeFormatter.ofPattern("QQQQ"))); // 第2四半期 pl.accept("[ofPattern] week-based-year 週基準年"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("YYYY"))); // 2014 // 例えば2014/1/1は水曜日なので2013/12/31は2014に組み込まれます pl.accept(ZonedDateTime.of(2013,12,31,0,0,0,0,ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("YYYY"))); // 2014 pl.accept("[ofPattern] week-of-week-based-year 年を通しての週基準年の週 (1~52 or 53)"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("w"))); // 14 // 2013/12/31(火)は2014年の1週目 pl.accept(ZonedDateTime.of(2013,12,31,0,0,0,0,ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("w"))); // 1 // 2013/12/28(日)は2013年の52週目 pl.accept(ZonedDateTime.of(2013,12,28,0,0,0,0,ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern("w"))); // 52 pl.accept("[ofPattern] week-of-month 週"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("W"))); // 1 pl.accept("[ofPattern] day-of-week 曜日"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("E"))); // 水 pl.accept(datetime.format(DateTimeFormatter.ofPattern("EE"))); // 水 pl.accept(datetime.format(DateTimeFormatter.ofPattern("EEE"))); // 水 pl.accept(datetime.format(DateTimeFormatter.ofPattern("EEEE"))); // 水曜日 pl.accept(datetime.format(DateTimeFormatter.ofPattern("EEEEE"))); // 水 pl.accept("[ofPattern] localized day-of-week"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("e"))); // 4 pl.accept(datetime.format(DateTimeFormatter.ofPattern("ee"))); // 04 pl.accept(datetime.format(DateTimeFormatter.ofPattern("eee"))); // 水 pl.accept(datetime.format(DateTimeFormatter.ofPattern("eeee"))); // 水曜日 pl.accept(datetime.format(DateTimeFormatter.ofPattern("eeeee"))); // 水 pl.accept(datetime.format(DateTimeFormatter.ofPattern("c"))); // 4 pl.accept(datetime.format(DateTimeFormatter.ofPattern("ccc"))); // 水 pl.accept(datetime.format(DateTimeFormatter.ofPattern("cccc"))); // 水曜日 pl.accept(datetime.format(DateTimeFormatter.ofPattern("ccccc"))); // 3 pl.accept("[ofPattern] week-of-month"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("F"))); // 2 pl.accept("[ofPattern] am-pm-of-day"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("a"))); // 午後 pl.accept("[ofPattern] clock-hour-of-am-pm (1-12)"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("h"))); // 9 pl.accept("[ofPattern] hour-of-am-pm (0-11)"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("K"))); // 9 pl.accept("[ofPattern] clock-hour-of-am-pm (1-24)"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("k"))); // 21 pl.accept("[ofPattern] hour-of-day (0-23) 時"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("H"))); // 21 pl.accept("[ofPattern] hour-of-day (00-23) 時"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("HH"))); // 21 pl.accept("[ofPattern] minute-of-hour 分"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("mm"))); // 20 pl.accept("[ofPattern] second-of-minute 秒"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("ss"))); // 58 pl.accept("[ofPattern] fraction-of-second ミリ秒"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("SSS"))); // 094 pl.accept("[ofPattern] nano-of-second ナノ秒"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("n"))); // 94000000 pl.accept("[ofPattern] milli-of-day 1日の経過ミリ秒"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("A"))); // 76858094 pl.accept("[ofPattern] nano-of-day 1日の経過ナノ秒"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("N"))); // 76858094000000 pl.accept("[ofPattern] time-zone ID タイムゾーンID ZonedDateTime以外では使用不可"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("VV"))); // Asia/Tokyo pl.accept("[ofPattern] time-zone name タイムゾーン名 ZonedDateTime以外では使用不可"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("z"))); // JST pl.accept("[ofPattern] localized zone-offset"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("0"))); // 0 pl.accept("[ofPattern] zone-offset オフセット UTC(+0000)の場合 +0000の代わりにZを表示"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("XXXX"))); // +0900 // UTCの場合 pl.accept(ZonedDateTime.now(ZoneId.of("GMT")).format(DateTimeFormatter.ofPattern("XXXX"))); // Z pl.accept("[ofPattern] zone-offset オフセット"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("xxxx"))); // +0900 // UTCの場合 pl.accept(ZonedDateTime.now(ZoneId.of("GMT")).format(DateTimeFormatter.ofPattern("xxxx"))); // +0000 pl.accept("[ofPattern] zone-offset オフセット"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("Z"))); // +0900 pl.accept(datetime.format(DateTimeFormatter.ofPattern("ZZ"))); // +0900 pl.accept(datetime.format(DateTimeFormatter.ofPattern("ZZZ"))); // +0900 pl.accept(datetime.format(DateTimeFormatter.ofPattern("ZZZZ"))); // GMT+09:00 pl.accept("[ofPattern] escape for text / [] # {} 次の文字列はシングルクォートでエスケープが必要です(/[]#{})"); pl.accept(datetime.format(DateTimeFormatter.ofPattern("'['yyyy'/'MM'/'dd']' '{'HH'#'mm'#'ss'}'"))); // [2014/04/02] {21#20#58} pl.accept("[withZoneSameInstant] タイムゾーン変換"); pl.accept(datetime.withZoneSameInstant(ZoneId.of("America/Los_Angeles")).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-02T05:20:58.094-07:00[America/Los_Angeles]
java.time.chrono.JapaneseDate の文字列変換
Consumer<Object> pl = System.out::println; JapaneseDate jd = JapaneseDate.now(); pl.accept("[Japanese Era Name List] 和暦名一覧"); jd.getChronology().eras().forEach(pl); // Meiji // Taisho // Showa // Heisei pl.accept("[toString]"); pl.accept(jd.toString()); // Japanese Heisei 26-04-02 pl.accept("[Japanese Era Name] 和暦(名)"); pl.accept(jd.getEra()); // Heisei pl.accept("[Japanese Era Year] 和暦(年)"); pl.accept(jd.get(ChronoField.YEAR_OF_ERA)); // 26 pl.accept("[Era] -1=明治/0=大正/1=昭和/2=平成"); pl.accept(jd.get(ChronoField.ERA)); // 2 pl.accept("[InstantSeconds] エポック日(Unix時間/日) 1970-01-01からの経過日"); pl.accept(jd.getLong(ChronoField.EPOCH_DAY)); // 16162 pl.accept("[ofPattern]"); pl.accept(jd.format(DateTimeFormatter.ofPattern("Gyy年 MM月dd日"))); // 平成26年 04月02日
日時操作サンプル
java.time.ZonedDateTime の日時操作
Consumer<Object> pl = System.out::println; //---------------------------------------------------------------------------------------------- // 日時操作 //---------------------------------------------------------------------------------------------- pl.accept("[original]"); pl.accept(datetime.format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-02T21:20:58.094+09:00[Asia/Tokyo] pl.accept("[+1Years] +1年"); pl.accept(datetime.plusYears(1).format(DateTimeFormatter.ISO_DATE_TIME)); // 2015-04-02T21:20:58.094+09:00[Asia/Tokyo] pl.accept("[+1Months] +1ヶ月"); pl.accept(datetime.plusMonths(1).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-05-02T21:20:58.094+09:00[Asia/Tokyo] pl.accept("[+1Days] +1日"); pl.accept(datetime.plusDays(1).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-03T21:20:58.094+09:00[Asia/Tokyo] pl.accept("[+1Hours] +1時間"); pl.accept(datetime.plusHours(1).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-02T22:20:58.094+09:00[Asia/Tokyo] pl.accept("[+1Minutes] +1分"); pl.accept(datetime.plusMinutes(1).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-02T21:21:58.094+09:00[Asia/Tokyo] pl.accept("[+1Seconds] +1秒"); pl.accept(datetime.plusSeconds(1).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-02T21:20:59.094+09:00[Asia/Tokyo] pl.accept("[+1Millis] +1ミリ秒"); pl.accept(datetime.plus(1, ChronoUnit.MILLIS).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-02T21:20:58.095+09:00[Asia/Tokyo] pl.accept("[+1Micros] +1マイクロ秒"); pl.accept(datetime.plus(1, ChronoUnit.MICROS).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-02T21:20:58.094001+09:00[Asia/Tokyo] pl.accept("[+1Nanos] +1ナノ秒"); pl.accept(datetime.plusNanos(1).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-02T21:20:58.094000001+09:00[Asia/Tokyo] pl.accept("[+1Weeks] +1週"); pl.accept(datetime.plusWeeks(1).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-09T21:20:58.094+09:00[Asia/Tokyo] pl.accept("[+1HalfDays] +12時間"); pl.accept(datetime.plus(1, ChronoUnit.HALF_DAYS).format(DateTimeFormatter.ISO_DATE_TIME)); // 2014-04-03T09:20:58.094+09:00[Asia/Tokyo] pl.accept("[+1Decades] +10年"); pl.accept(datetime.plus(1, ChronoUnit.DECADES).format(DateTimeFormatter.ISO_DATE_TIME)); // 2024-04-02T21:20:58.094+09:00[Asia/Tokyo] pl.accept("[+1Centuries] +100年"); pl.accept(datetime.plus(1, ChronoUnit.CENTURIES).format(DateTimeFormatter.ISO_DATE_TIME)); // 2114-04-02T21:20:58.094+09:00[Asia/Tokyo] pl.accept("[+1Millennium] +1000年"); pl.accept(datetime.plus(1, ChronoUnit.MILLENNIA).format(DateTimeFormatter.ISO_DATE_TIME)); // 3014-04-02T21:20:58.094+09:00[Asia/Tokyo]
他に有用なものがあり次第追加していきます。
0 件のコメント:
コメントを投稿