web-dev-qa-db-ja.com

SimpleDateFormat文字列

_dateFormat.format_への引数が常にstringになるこのコードブロックがあります。そのため、ここで.toString()を実行しました。 「指定されたオブジェクトを日付としてフォーマットできません」というエラーが発生します。

これを行う方法はありますか?文字列はデータベースからのものであり、ここではサンプルとしてnew Date()を使用していることに注意してください。

_SimpleDateFormat dateFormat = new SimpleDateFormat("MMMMM dd, yyyy");
String sCertDate = dateFormat.format(new Date().toString());
_
15
Pit Digger

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);
24
Kal

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

  • 文字列を解析します-文字列として表現された日付があり、対応するDateオブジェクトを取得したい場合。次にdateFormat.parse(string)を使用します

  • 日付をフォーマットする-Dateオブジェクトがあり、それを特定の方法でフォーマットしたい場合(通常、ユーザーに表示するため)。その場合はdateFormat.format(date)を使用してください

2つの方法は逆です。1つは日付を取得して文字列を返し、もう1つは文字列を取得して日付を返します。

特定のケースでは、おそらく.parse(..)が必要です。ただし、すべての「自尊心のある」データベースドライバーには、文字列表現ではなくDateを返すオプションが必要です。日付を文字列としてDBに保存している場合は、そうしないでください。ネイティブの日付タイプを使用します。

6
Bozho

1つの文字列形式で日付を読み取り、別の文字列形式に出力する必要がある場合は、2つのフォーマッタが必要です。次に例を示します。

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