2

通常、私は次のようにそれを行っていました:

DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
Date d = f.parse("2012-12-21");
Calendar c = Calendar.getInstance();
c.setTime(d);
bean.setDate(c);

しかし、私はちょうどその実用的な解決策を見つけました:

DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
f.parse("2012-12-21");
bean.setDate(f.getCalendar());

なぜドキュメントparse()のどこにも、 (たとえば)単に値を返すのではなく、解析後に値を念頭に置くように指定されているのですか?それは悪い方法ですか?何年も裏切られたような気がします...

4

3 に答える 3

3

カレンダーは変更可能です。同じSimpeDateFormatインスタンスで新しい日付を解析すると、Beanの日付/カレンダーが変更される可能性があります

于 2013-03-20T11:31:47.817 に答える
2

悪いと思います。解析中に日付を設定するために使用されるインスタンスがありますDateFormat。たとえば、別のロケールのインスタンスを実行する場合は、Calendarこのインスタンスをメソッドで設定できます。setCalendar日付を解析した後、このインスタンスは単に前の状態にとどまり、それは現在の実装にあります。将来、この値はメソッドが戻った後にクリアされる可能性parseがあるため、この実装に依存しません。getCalendar()は実際に使用されているため、現在使用されている「種類」Callendarやロケールなどを確認できますが、現在の値を取得するためには使用されません。

于 2013-03-20T11:30:22.160 に答える
0

カレンダーからインスタンスを作成してdateFormatを直接使用する必要はないと思います。

DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
f.format(f.parse("2012-12-21"));
bean.setDate(f.getCalendar());
于 2013-03-20T11:47:09.303 に答える