TITLE:TimeZoneによる日付表示の変換

TimeZoneによる日付表示の変換

編集者:Terai Atsuhiro~

作成日:2004-04-19
更新日: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: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTVW5Ljb9I/AAAAAAAAAng/mMDH4E_v9ZQ/s800/TimeZone.png

概要

TimeZoneなどを使って、日付の表示を変換します。

概要

TimeZoneなどを使って、日付の表示を変換します。

サンプルコード

#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
#screenshot
#spanend
#spanadd
JButton formatButton = new JButton("format");
#spanend
#spanadd
formatButton.addActionListener(e -> field.setText(format.format(new Date())));
#spanend

#spandel
**サンプルコード [#fc90bfc8]
#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
  • &jnlp;
  • &jar;
  • &zip;

解説

上記のサンプルは、Locale.USの日付文字列をSimpleDateFormat#parse(...)メソッドを使用して一旦Dateに変換し、DateFormat#format(...)メソッドでデフォルトロケールTimeZoneのフォーマットスタイルに変換しています。

解説

サンプルプログラムでは、メールなどのDateを変換するようにしています。
  • dateFormat.setTimeZone(TimeZone.getTimeZone("JST"))のような3文字のタイムゾーンIDの使用は非推奨
  • Java 1.7.0からタイムゾーンのパターン文字XISO 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

参考リンク

コメント