4

現在の日付を取得し、それを特定の形式に変換してから文字列として返す簡単なメソッドがあります。これまでは問題ありませんでしたが(最後に試したのは1月31日頃)、何らかの理由で今日試したところ、文字列「2013-02-43」が返されました。

今では明らかに2月は43日ではなく、なぜこれが返されるのかわかりません。私は解決策を見つけることができるすべての場所を検索しましたが、それらのどれも私が抱えている特定の問題に適合していないようです。コードは次のとおりです。

public String getDate(){
    DateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD");
    Date date = new Date();

    return dateFormat.format(date);
}

記録のために、Calendar.getInstance()などを使用してみましたが同じ結果になりました。おもしろいことに試してみると

get(Calendar.DAY_OF_MONTH) 

12で戻ってくるので、どこかで数字は正しいですが、その間に何か問題が発生しています。

ありがとう

4

9 に答える 9

17

DDは年間の日をdd意味し、月の日を意味します。また、Yは週を意味し、一方yは年を意味します。必要ですyyyy-MM-dd(大文字と小文字が区別されます)。

public String getDate(){
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date date = new Date();

    return dateFormat.format(date);
}
于 2013-02-12T15:35:04.903 に答える
4

a の大文字 D はDateFormat年の日付です。月の日付が必要です:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
于 2013-02-12T15:35:49.093 に答える
3

これを試してください:「yyyy-MM-dd」

大文字と小文字の区別が重要です。「DD」は年の日付です。

于 2013-02-12T15:35:21.923 に答える
1

小文字の d を含む「yyyy-MM-dd」形式を使用することもできます。大文字の D は、年の日付の形式です。日付パターンの概要については、こちらを参照してください。

于 2013-02-12T15:35:22.627 に答える
1

SimpleDateFormat の javadoc を読んでください。Yは存在せずD、年の日付です。yyyy-MM-ddあなたのパターンとして欲しい。

于 2013-02-12T15:36:35.897 に答える
0

フォーマット文字列は"YYYY-MM-dd"ではなく"YYYY-MM-DD".

DDは「年中日」、ddは「月中日」です。

参照を確認してください。

于 2013-02-12T15:35:37.570 に答える
0

日付形式は小文字にする必要があるようです

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

2013-02-12 を返します

それ以外の場合は、年間通算日を返します。

受け入れられるフォーマット パターンの完全なリストについては、SimpleDateFormat APIページを参照してください。

于 2013-02-12T15:37:22.427 に答える
0

次のコードを使用します。

SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd");
Date date = new Date();
System.out.println(df.format(date));

であってはなりddませんDD

于 2013-02-12T15:43:46.483 に答える