Swing/TimeZone のバックアップの現在との差分(No.9)
TimeZoneによる日付表示の変換
編集者:Terai Atsuhiro~
作成日:2004-04-19
更新日:2021-04-14 (水) 04:00:58
概要
TimeZone
などを使って、日付の表示を変換します。
概要
TimeZoneなどを使って、日付の表示を変換します。Screenshot
Advertisement
サンプルコード
#spanend
#spanadd
SimpleDateFormat format = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US);
#spanend
#spanadd
DateFormat df = DateFormat.getDateTimeInstance();
#spanend
#spanadd
// df.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));
#spanend
#spanadd
df.setTimeZone(TimeZone.getDefault());
#spanend
#spandel
**サンプルコード [#fc90bfc8]
#spanend
#spanadd
JButton formatButton = new JButton("format");
#spanend
#spanadd
formatButton.addActionListener(e -> field.setText(format.format(new Date())));
#spanend
final SimpleDateFormat format =
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US);
final DateFormat df = DateFormat.getDateTimeInstance();
//field.setText("Mon, 19 Apr 2004 16:31:41 +0900");
outf.setEditable(false);
df.setTimeZone(TimeZone.getTimeZone("JST"));
JButton button = new JButton(new AbstractAction("変換") {
public void actionPerformed(ActionEvent e) {
String str = field.getText().trim();
ParsePosition pp = new ParsePosition(0);
Date date = format.parse(str, pp);
if(date!=null) {
outf.setText(df.format(date));
}else{
outf.setText("error");
Logger.global.info(pp.toString());
}
}
});
#spanadd
JButton parseButton = new JButton("parse");
#spanend
#spanadd
parseButton.addActionListener(e -> {
#spanend
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");
#spanadd
});
#spanend
#spanadd
View in GitHub: Java, Kotlin解説
サンプルプログラムでは、メールなどのDateを変換するようにしています。解説
上記のサンプルは、Locale.US
の日付文字列をSimpleDateFormat#parse(...)
メソッドを使用して一旦Date
に変換し、DateFormat#format(...)
メソッドでデフォルトロケールTimeZone
のフォーマットスタイルに変換しています。
コメント
-
dateFormat.setTimeZone(TimeZone.getTimeZone("JST"))
のような3
文字のタイムゾーンID
の使用は非推奨 -
Java 1.7.0
からタイムゾーンのパターン文字X
でISO 8601
形式に変換可能になった-
X
:+09
-
XX
:+0900
-
XXX
:+09:00
-
#spanend
#spanadd
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
#spanend
#spanadd
System.out.println("pubdate: " + format.format(new Date()));
#spanend
#spanadd
// pubdate: 2014-09-08T00:05:45+09:00
#spanend
#spanadd