2011-08-22 14 views
12

このコードブロックはdateFormat.formatの引数が常にstringになるので、ここでは.toString()となっています。 "指定されたオブジェクトを日付としてフォーマットできません"というエラーが表示されます。SimpleDateFormat文字列

これを行う方法はありますか?ここではサンプルとして新しいDate()を使用しています。

SimpleDateFormat dateFormat = new SimpleDateFormat("MMMMM dd, yyyy"); 
String sCertDate = dateFormat.format(new Date().toString()); 
+0

を、あなたが最終的に – Bozho

答えて

21

DateFormat#formatは、文字列ではなく、日付を受け入れます。

使用

String sCertDate = dateFormat.format(new Date()); 

あなたが特定の形式でデータベースからの文字列を持っていて、日付に変換したい場合、あなたはparseメソッドを使用する必要があります。

@Sonesh - データベース内に日付を表​​す文字列があるとしましょう(データベースにオブジェクトを日付として保存する方が良いかもしれません)、最初にparseあなたが望む形式になりますformatそれを望む文字列形式に変換します。

// Assumes your date is stored in db with format 08/01/2011 
SimpleDateFormat dateFormatOfStringInDB = new SimpleDateFormat("MM/dd/yyyy"); 
Date d1 = dateFormatOfStringInDB.parse(yourDBString); 
SimpleDateFormat dateFormatYouWant = new SimpleDateFormat("MMMMM dd, yyyy"); 
String sCertDate = dateFormatYouWant.format(d1); 
+3

を達成しようとしているものは明らかではありません@ 'parse()'メソッドはStringを受け取ります。 'format()'メソッドはDateを受け入れます。 – Marcelo

+0

@Marcelo:私の間違い。 –

+0

私の場合は、それは常にそれを解析し、フォーマットを使用する必要がありますフォーマットする文字列がありますか? –

6

SimpleDateFormatの2つのアプリケーションがあります。

  • は、文字列を解析 - あなたは文字列として表される日付を持っている、とあなたは、対応するDateオブジェクトを取得したいとき。あなたがDateオブジェクトを持っていて、特定の方法(通常、ユーザーにそれを示すために)で、それをフォーマットしたいとき - そして、dateFormat.parse(string)

  • 形式の日付を使用します。その場合dateFormat.format(date)

を使用する2つの方法が相反している - 一つは日付を取得し、文字列を返し、その他の文字列を取り、日付を返します。

具体的なケースでは、おそらく.parse(..)が必要です。ただし、すべての「自己尊重」データベースドライバには、文字列表現ではなくDateを返すオプションが必要です。 DBに日付を文字列として格納している場合は、それをしないでください。ネイティブの日付タイプを使用します。あなたが別の文字列形式に1つの文字列のフォーマットと出力とそれを日付を読み取る必要がある場合は

+0

+1良い説明。 –

+0

解析エラーが発生しました。 "Unparseable date:" 8月22日(月)16:10:16 GMT + 00:00 2011 "" SimpleDateFormat dateFormat =新しいSimpleDateFormat( "MMMMM dd、yyyy"); \t \t日付parsedDate = dateFormat.parse(new Date()。toString()); \t \t文字列sCertDate = dateFormat.format(parsedDate); –

+2

まあ、明らかにあなたが指定するフォーマットと日付のフォーマットはかなり異なります。 – Bozho

4

、あなたが例えば2つのフォーマッタ、必要があります。

SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); 
SimpleDateFormat outputFormat = new SimpleDateFormat("MMMMM dd, yyyy"); 
String output = outputFormat.format(inputFormat.parse(input)); 
+0

私はこのoutputFormat.format(inputFormat.parse(new Date()。toString()))を試しました。そして、エラーは "Unparseable date:" Mon Aug 22 16:10:16 GMT + 00:00 2011 "" –

+1

@ Soneshあなたは適切な日付形式を解析する必要があります "Mon Aug 22 22 16:10:16 GMT + 00:00 2011 " "yyyy-MM-dd"は "2010-11-25"のような日付を解析します。 – Marcelo

関連する問題