2011-12-09 10 views
4

java.util.Dateで愚かな問題があります。Java DATE Parsing

私はこのコード行を持っていますが、なぜこの日付がこの形式では解析できないのか分かりません。

public class TestTime { 
    public static void main(String[] args) { 
     final String DATE_FORMAT = "EEE MMM dd HH:mm:ss zzz yyyy"; 

     String date = "Sat Dec 31 10:00:00 CET 2011"; 
     SimpleDateFormat dFormat = new SimpleDateFormat(DATE_FORMAT); 

     Date lDate = null; 
     try { 
      lDate = dFormat.parse(date); 
     } catch (ParseException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
    } 
} 
+3

デフォルトのロケールを確認してください、それはen_USですか、それとも何か「不明瞭」ですか? – home

+0

例外トレースを表示 – korifey

+1

'SimpleDateFormat'を使用する場合は注意してください。スレッドセーフではありません。 http://www.codefutures.com/weblog/andygrove/2007/10/simpledateformat-and-thread-safety.html – Gray

答えて

10

場合は、このコンストラクタを使用する必要があります同じフォーマッタを使用して日付を入力し、その出力を入力文字列と比較します。

5

私はこれに何か問題はありません。これは、エラーなしで私のために実行し、返します、あなたはフォーマットする必要があり、これは問題ではない場合

SimpleDateFormat(DATE_FORMAT,Locale.ENGLISH); 

:お使いのシステムが英語以外のロケールを使用しています

Sat Dec 31 09:00:00 GMT 2011 
+0

本当に答えはありますか? – soulcheck

+2

スタックトレースがなければ、それは有効な努力でした - そして、少なくともコードに「完全に間違っている」ものは何もないことを示し、環境固有のものでなければなりません。ロケールの提案は+1。 – ziesemer

+0

ありがとう!ロケールの問題でした! – migueloop

1

ロケール関連の問題と思われます。

フランス語のロケールを設定した場合、パターンは機能しません。 SimpleDateFormatコンストラクタでLocaleをUSに設定した場合は、動作します。

SimpleDateFormat dFormat =新しいSimpleDateFormat(DATE_FORMAT、Locale.US);

+0

ありがとうOlivier、それはようやくLocaleの問題でした。 – migueloop