1

これinvprbm.setFollowUpDate()java.util.Dateタイプです。
指定された値が空の場合、followUpDate特殊文字として設定する必要があります- -。例:

SimpleDateFormat formatter = new SimpleDateFormat("- -");
invprbm.setFollowUpDate(formatter.parse("- -"));

このシナリオThu Jan 01 00:00:00 IST 1970では、期待されるのではなく、のような値を取得しています- -

4

1 に答える 1

0

文字列「--」で示した「空の」日付をどのように解析する必要があるかを尋ねているようです。そして、簡単な答えは、それを解析しないということです!

代わりに、次のようなことを行います。

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yy"); // or whatever
if (str.equals("- -")) {
    invprbm.setFollowupDate(null);
} else {
    invprbm.setFollowUpDate(formatter.parse(str));
}

そして、実際に日付から文字列に移動したい場合は、次のようにします。

if (date == null) {
    invprbm.setFollowupDate("- -");
} else {
    invprbm.setFollowUpDate(formatter.format(date));
}

現在のアプローチの問題は、 DatesSimpleDateFormatに対応するように設計されていないことです。null文字列を解析してDateオブジェクトを生成したり、nullDateオブジェクトをフォーマットしたりすることはできませんnull

現在のコードが実際に行っているのは、入力文字列から日付/時刻のコンポーネントを抽出する方法をパーサーに指示しない形式を指定することです。このメソッドは、値がゼロparseのDateオブジェクトを返します。getTime()あなたがやろうとしていることはSimpleDateFormatクラスのjavadoc仕様の範囲外であるため、これは不合理ではありません。

于 2012-11-20T06:44:26.573 に答える