2

日付形式を設定してから日付データ型に変換するためにこれを行っていますが、期待される結果が得られません。

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
 DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
 String cur_date=dateFormat.format(new Date());
 myDb.setDOB(formatter.parse(cur_date));

シナリオ: 現在の日付を yyyy/mm/dd に変換し、それを setDOB(Date date) に渡したい。

編集:結果が追加されました。結果は 2013 年 1 月 1 日火曜日 00:08:00 IST です。

彼ら!私は「mm」を使用していません。ここでは、DateFormat で誤って mm と書きましたが、これも MM です。

もう一度編集最初に setDOB(new Date() ); を使用しました。フォーマットの問題がありましたが、

次に、SimpleDateFormat.format を使用して yyyy/MM/dd を設定しましたが、文字列が返されるので使用されます

DateFormat.parse を使用して、日付型に変換し直します。

4

7 に答える 7

4

同じ形式を使用していません。ケース重視!「MM」は月、「mm」は分です。

于 2013-08-01T08:06:58.147 に答える
2

ただし、フォーマットの問題を最初に発見した場合は+1マエル...

Dateエポック (Jan-1970-01-01 GMT) からのミリ秒数のコンテナーであり、値の形式は気にしません。

たとえば、次の...

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
Date now = new Date();
String cur_date = dateFormat.format(now);

try {
    System.out.println("Now = " + now);
    System.out.println("cur_date = " + cur_date);
    System.out.println("dateFormat.parse(cur_date) = " + dateFormat.parse(cur_date));
} catch (ParseException exp) {
    exp.printStackTrace();
}

出力...

Now = Thu Aug 01 18:08:39 EST 2013
cur_date = 2013/08/01
dateFormat.parse(cur_date) = Thu Aug 01 00:00:00 EST 2013

したがって、これを行うと、日付に関する重要なデータが失われる可能性があります...

値を保存するときではなく、値を表示するときに書式設定をそのままにしておきます(それを回避できる場合)

于 2013-08-01T08:10:30.327 に答える
2

問題は、MM 形式です。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
DateFormat formatter = new SimpleDateFormat("yyyy/mm/dd");
  • MM は月
  • mm は分

詳細なフォーマットについては、こちらを参照してください。だったはずですが、

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
于 2013-08-01T08:07:28.840 に答える
1

Dateその形式を「知っている」ことを期待しているようです。そうではありません。Dateオブジェクトには、Unix エポックからのミリ秒数が含まれているだけです。タイムゾーン、カレンダー、または文字列形式については知りません。ただのデートです。

したがって、コードは次のようになります。

myDb.setDOB(new Date());

...そして、表示している場所のフォーマットを処理します。

于 2013-08-01T08:11:05.453 に答える
0

異なる日付文字列パターンを使用しています。MM は月、mm は分 ( SimpleDateFormat APIを参照)

setDOB は Date オブジェクトを取得しています。メソッド呼び出しのパラメーターとして日付を指定するときに、日付をフォーマットする必要がある理由がわかりません。通常、日付をレンダリング/どこかに保存する必要がある場合は、日付をフォーマットします。

于 2013-08-01T08:10:06.647 に答える
0

formatter.parse は String Date を解析するために使用され、Date Objectを返します。日付は、Date オブジェクトとして、または例として1970 年 1 月 1 日 00:00:00 GMTからのミリ秒として表されます。私はあなたが実際に何をしているのかわかりません。Date オブジェクトは、常に上記の形式で表されます。

于 2013-09-26T12:37:51.930 に答える