Swing/TimeZone のバックアップ(No.18)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TimeZone へ行く。
- 1 (2004-04-19 (月) 10:36:59)
- 2 (2004-04-19 (月) 10:42:09)
- 3 (2004-06-02 (水) 10:01:50)
- 4 (2004-08-31 (火) 12:31:53)
- 5 (2004-10-08 (金) 06:27:10)
- 6 (2004-11-04 (木) 10:12:54)
- 7 (2005-04-28 (木) 04:33:10)
- 8 (2005-11-06 (日) 22:00:29)
- 9 (2006-02-27 (月) 16:49:23)
- 10 (2007-03-13 (火) 00:22:11)
- 11 (2013-04-07 (日) 04:44:59)
- 12 (2013-10-10 (木) 11:46:33)
- 13 (2014-10-23 (木) 01:00:47)
- 14 (2015-03-09 (月) 14:46:02)
- 15 (2015-03-16 (月) 17:28:33)
- 16 (2015-11-25 (水) 21:18:58)
- 17 (2016-11-01 (火) 19:34:56)
- 18 (2017-07-10 (月) 17:03:31)
- 19 (2017-12-07 (木) 11:29:57)
- 20 (2017-12-11 (月) 20:06:37)
- 21 (2019-08-21 (水) 18:51:38)
- 22 (2021-04-14 (水) 04:00:58)
- category: swing folder: TimeZone title: TimeZoneによる日付表示の変換 tags: [DateFormat] author: aterai pubdate: 2004-04-19T10:36:59+09:00 description: TimeZoneなどを使って、日付の表示を変換します。 image:
概要
TimeZone
などを使って、日付の表示を変換します。
Screenshot
Advertisement
サンプルコード
final SimpleDateFormat format =
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US);
final DateFormat df = DateFormat.getDateTimeInstance();
df.setTimeZone(TimeZone.getTimeZone("JST"));
//field.setText("Mon, 19 Apr 2004 16:31:41 +0900");
JPanel bp = new JPanel(new GridLayout(1, 0, 2, 2));
bp.add(new JButton(new AbstractAction("format") {
@Override public void actionPerformed(ActionEvent e) {
field.setText(format.format(new Date()));
}
}));
bp.add(new JButton(new AbstractAction("parse") {
@Override public void actionPerformed(ActionEvent e) {
String str = field.getText().trim();
ParsePosition pp = new ParsePosition(0);
Date date = format.parse(str, pp);
String o = Objects.nonNull(date) ? df.format(date) : "error";
textArea.append(o + "\n");
}
}));
View in GitHub: Java, Kotlin解説
上記のサンプルは、Locale.US
(メールなど)の日付文字列を、SimpleDateFormat#parse(...)
メソッドを使用して一旦Date
に変換し、DateFormat#format(...)
メソッドでデフォルトロケールTimeZone
のフォーマットスタイルに変換しています。
Java 1.7.0
から、タイムゾーンのパターン文字としてX
を使用すると、ISO 8601
形式に変換可能になりました。
- 例:
X
:+09
XX
:+0900
XXX
:+09:00
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