少し話題は遅いですが、日本時間で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 件のコメント:
コメントを投稿