- PR -

SimpleDateFormat "EEE, d MMM yyyy HH:mm:ss Z"

1
投稿者投稿内容
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-06-14 20:52
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/text/SimpleDateFormat.html

ここ↑に例として、

日付/時刻パターン 結果
「EEE, d MMM yyyy HH:mm:ss Z」 Wed, 4 Jul 2001 12:08:56 -0700

と書いてあったので、
下記のテストプログラムを作成しました。
コード:
	public static void main(String[] args) throws Exception {
		SimpleDateFormat parser
		  = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
		Date publishDate = parser.parse("Wed, 4 Jul 2001 12:08:56 -0700");
		
		SimpleDateFormat formatter
		  = new SimpleDateFormat("yyyy年M月d日");
		System.out.println(formatter.format(publishDate));
	}


実行したところ例外が発生します。
コード:
Exception in thread "main" java.text.ParseException: Unparseable date: "Wed, 4 Jul 2001 12:08:56 -0700"
	at java.text.DateFormat.parse(DateFormat.java:335)
	at jp.nadai.util.DateUtilTest.main(DateUtilTest.java:13)



いろいろいぢったところ、"EEE" と "MMM" がいけないようです。
コード:
		SimpleDateFormat parser
		  = new SimpleDateFormat("d MM yyyy HH:mm:ss Z");
		Date publishDate = parser.parse("4 07 2001 12:08:56 +0900");


このように変更したらちゃんと動きました。
コード:
2001年7月5日



"EEE, d MMM yyyy HH:mm:ss Z" で動かすにはどのようにすればよいでしょうか?

よろしくお願いいたします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-06-14 21:26
ロケールをUSにしてみたらどうなりますか?
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-06-15 00:08
Locale.USなら例外がスローされることなく動きました。
その他、英語圏の国なら正しく動くようです。
"Wed"や"Jul"は英語なので、英語圏のロケールでなければ
例外になるということですね。固いですねぇ。
そういう意味では、Locale.ENGLISH が妥当な値だと思います。
ちなみに、Locale.JAPANESE(デフォルト)で、
コード:
		Date publishDate = parser.parse("水, 4 7月 2001 12:08:56 -0700");


でも、動きました(苦笑)。

アドバイス、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)