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());

为什么在doc中没有指定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

我认为您不需要从 Calendar 创建实例并直接使用 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 回答