dポイントプレゼントキャンペーン実施中!

とても単純なことを私が誤解しているのだと思うのですが、
文字列のDateFormatへのパースに関して、

 DateFormat f = new SimpleDateFormat( "yyyy.MM.dd 'at' HH:mm:ss" );
 try {
  f.parse( "2001.07.04 at 12:08:56" );
 } catch (ParseException e) {
  e.printStackTrace();
 }

この形式だと正しくパースできるのですが、アルファベットの月や曜日が
含まれた下のような形式では、
 java.text.ParseException: Unparseable date: "Wed, Jul 4, '01"
例外が発生してしまいます。

 DateFormat f = new SimpleDateFormat( "EEE, MMM d, ''yy" );
 try {
  f.parse( "Wed, Jul 4, '01" );
 } catch (ParseException e) {
  e.printStackTrace();
 }

この下のデータサンプルはJavadocに掲載されている基本的な例ですので、
エラーになるはずはないのですが、ご助言頂ければ幸いです。

A 回答 (2件)

ロケール指定をしていないため、ロケールが日本になるからでしょう。


JavaDocに載っているサンプルは、
---JavaDoc抜粋--------------------------
次の例に、U.S. ロケールで日付/時刻パターン
     ~~~~~~~~~~~~~
----------------------------------------
とありますから。

↓を試すと納得するでしょう。
Date d = new Date();
System.out.println(f.format(d));
    • good
    • 0
この回答へのお礼

 DateFormat f = new SimpleDateFormat( "EEE, MMM d, ''yy", Locale.US );

なるほど、LocaleをUSに設定することで解決しました。
ありがとうございました。

お礼日時:2007/11/20 16:27

Javaは素人なので、間違っていたらごめんなさい。



下段のサンプルですが・・・
フォーマットを指定するときは'(シングルクオーテーション)を2つ重ねてエスケープしているのに、日付文字列を指定するときは'(シングルクオーテーション)は1つだけになっています。

このあたりが怪しいのでは?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!