2012-04-25 15 views
4

データベースに格納されている文字列値(「2012-01-20」など)を2012年1月20日の形式に変換しようとしています。カスタム日付からMM dd yyyyへのJavaの変更日付形式

私はいくつかの例を見てきましたが、Dateを使用しています。これはSimpleDateFormatで動作します。一例として、

ここで私が試した一つの方法ですが、いつも失敗し、結果はあなたが解析のために適切なフォーマットを使用していない、要するに

DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 
Date convertedDate=null; 

try { 

    convertedDate = df.parse(datePlayed);     

} catch(ParseException e){ 
    e.printStackTrace(); 
} 
+2

http://stackoverflow.com/questions/999172/how-to-parse-date-in-java –

+2

日付が '2012-01-20'のように見える場合、なぜあなたは' MM/dd/yyyy'をあなたの 'SimpleDateFormat'の作成に使用しますか? –

+0

@JamesMontagne私は自分自身でそれをもっと良く言ったことはありませんでした。 –

答えて

11

nullである「してみてください」。 2つのDateFormatインスタンスを使用する必要があります。 1つは解析用、もう1つは書式設定用です。

DateFormat parser = new SimpleDateFormat("yyyy-MM-dd"); 
DateFormat formatter = new SimpleDateFormat("MMM dd, yyyy"); 
Date convertedDate = parser.parse(datePlayed); 
String output = formatter.format(convertedDate); 
+0

それはうまくいった!今私は自分のパターンを認識するためにパーサーを設定することと何をしなければならないかを理解しています。速い応答のために非常にありがとう – user1070764

0

Dateをデータベースから読み取った場合は、java.sql.Dateとして保存します。 SimpleDateFormatをjava.util.Dateに変換した後で使用できます。 ResultSetオブジェクトから、日付を抽出できます。

あなたが意味するものは、あなたが他の誰かによってDBから抽出されたテキストで日付が与えられているということであり、あなたはそれに固執しています。使用してみてください:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
df.setLenient(true); 
convertedDate = df.parse(datePlayed.trim()); 

また、あなたがdatePlayed値は、あなたが期待するものであることを確認するために解析する前に、あなたが解析しているテキストを表示してみてください。 parseIntの場合、データの前後に余分なスペースがあるとエラーが発生するため、trim()を呼び出すと余分なスペースが削除されます。 E, dd/MM/yyyy !

幸運:

+0

これらはどちらも問題ではありません。 –

+0

実際の入力が表示されていないため、問題の内容がわからない。あなたは私が問題の最も可能性の高い原因を解決する方法を提案しました。 – Thorn

+0

FYI、[java.sql.Date](http://docs.oracle.com/javase/7/docs/api/java/sql/Date.html)は、[java.util.Date](http ://docs.oracle.com/javase/7/docs/api/java/util/Date.html)。変換する必要はありません。 –

1
Date da = new Date(); 
SimpleDateFormat ft = new SimpleDateFormat("E, dd/MM/yyyy !"); 
System.out.println("Update : " + ft.format(da)); 

あなたはであなたがしたいですかあなたの日付のスタイルを変更することができます!

関連する問題