Swing/TimeZone の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/TimeZone へ行く。
- Swing/TimeZone の差分を削除
--- category: swing folder: TimeZone title: TimeZoneによる日付表示の変換 tags: [DateFormat] author: aterai pubdate: 2004-04-19T10:36:59+09:00 description: TimeZoneなどを使って、日付の表示を変換します。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTVW5Ljb9I/AAAAAAAAAng/mMDH4E_v9ZQ/s800/TimeZone.png --- * 概要 [#summary] `TimeZone`などを使って、日付の表示を変換します。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTVW5Ljb9I/AAAAAAAAAng/mMDH4E_v9ZQ/s800/TimeZone.png) * サンプルコード [#sourcecode] #code(link){{ SimpleDateFormat format = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US); DateFormat df = DateFormat.getDateTimeInstance(); // df.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo")); df.setTimeZone(TimeZone.getDefault()); JButton formatButton = new JButton("format"); formatButton.addActionListener(e -> field.setText(format.format(new Date()))); JButton parseButton = new JButton("parse"); parseButton.addActionListener(e -> { String str = field.getText().trim(); Date date = format.parse(str, new ParsePosition(0)); String o = Optional.ofNullable(date).map(df::format).orElse("error"); textArea.append(o + "\n"); }); }} * 解説 [#explanation] 上記のサンプルは、`Locale.US`の日付文字列を`SimpleDateFormat#parse(...)`メソッドを使用して一旦`Date`に変換し、`DateFormat#format(...)`メソッドでデフォルトロケール`TimeZone`のフォーマットスタイルに変換しています。 - `dateFormat.setTimeZone(TimeZone.getTimeZone("JST"))`のような`3`文字のタイムゾーン`ID`の使用は非推奨 - `Java 1.7.0`からタイムゾーンのパターン文字として`X`を使用すると、`ISO 8601`形式に変換可能になった - `Java 1.7.0`からタイムゾーンのパターン文字`X`で`ISO 8601`形式に変換可能になった -- `X`: `+09` -- `XX`: `+0900` -- `XXX`: `+09:00` #code{{ DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); System.out.println("pubdate: " + format.format(new Date())); // pubdate: 2014-09-08T00:05:45+09:00 }} * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/java/util/TimeZone.html TimeZone (Java Platform SE 8)] - [https://docs.oracle.com/javase/jp/8/docs/api/java/text/SimpleDateFormat.html SimpleDateFormat (Java Platform SE 8)] * コメント [#comment] #comment #comment