通常,我这样做:
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()
(例如)在解析后记住值而不是简单地返回它?这是一个糟糕的方式吗?我觉得这些年来被背叛了......
答案 0 :(得分:3)
日历是可变的,如果您使用相同的SimpeDateFormat实例解析新日期,您的bean的日期/日历可能会更改
答案 1 :(得分:2)
我认为这很糟糕。 DateFormat
具有Calendar
实例,用于在解析期间设置日期。如果要为其他语言环境执行实例,则可以使用setCalendar
方法设置此实例。在解析日期之后,这个实例只是保持在先前状态并且在当前实现中,将来这个值可能在parse
方法返回后清除,所以我不会依赖这个实现。事实上getCalendar()
已被使用,因此您可以查看当前正在使用的Callendar
类型,哪种语言环境等,但不能获取当前值。
答案 2 :(得分:0)
我认为你不需要从Calendar创建实例并直接使用dateFormat:
DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
f.format(f.parse("2012-12-21"));
bean.setDate(f.getCalendar());