2011-12-19 4 views
0

java.text.ParseExceptionに文字列の日付を変換しようとすると:解析できない日:「土5月1日午前0時00分00秒EDT 2010」

私はSimpleDateFormatのクラスを使用してこの日付を解析しようとしています。

あなたが yyyy-MM-ddの形式を使用しているためだろう
java.util.Date prevStartDate = new Date(); 
java.util.Date prevStopDate = new Date(); 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
prevStartDate = dateFormat.format(startDateLY); 
+3

あなたが解析しようとしている日は、あなたがきたあなたの日付形式のように何も見えません私たちに示した。実際、あなたの質問に 'parse'を呼び出すことは全くありません。それは関連コードですか? – Paul

答えて

3

- あなたはその形式に入力して各パラメータを追加する必要があります。

それはあなたの形式は、あなたが一方から他方へ変換する必要がありE MMM dd HH:mm:ss z yyyy

で次のようになります。

static DateFormat extended = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); 
static DateFormat simple = new SimpleDateFormat("yyyy-MM-dd"); 

String reformat(String extendedString) { 
    Date yourDate = extended.parse(extendedString); 
    String simpleString = simple.format(yourDate); 
    return simpleString; 
} 

または代わりに、

String reformat(String dateString) { 
    return simple.format(extended.parse(dateString)); 
} 
1
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); 
Date date = (Date)formatter.parse("Sat May 01 00:00:00 EDT 2010"); 
String string = new String(date.getYear() + "-" + date.getMonth() + "-" + date.getDay()); 

はその後、より良い動作するはずただyyyy-MM-dd。 1を提供することにより、あなたは特定の言語や国のためにローカライズされた日付文字列を取得することができるように

+0

私はmysqlの挿入のためにyyyy-mm-ddが必要です – kbrin80

+0

@ kbrin8 - 私はあなたにそのフォーマットの文字列を与える答えを更新しました – Grammin

+0

これに関していくつかの問題があります。まず、構文解析用にフォーマッタを使用します(良い)が、出力用にもフォーマッタを使用しないのはなぜですか?第2に、 'new String'を使用することは、ほとんど常に貧弱な決定です。実際には、この場合、バッキング配列のコピーを強制するだけです。 – corsiKa

関連する問題