原来在tomcat 4.x环境下用DateFormat.getDateInstance().parse("2005-6-30")获取对应Date对象时,一直都没问题。
但转到tomcat 5.5.9环境后,这个方法出现错误。看帮助半天也没看明白,后来在eclipse中跟踪调试,发现DateFormat有个pattern私有变量,其中的值是“MMM d,yyyy”这样子。哦,原来是这样,但是DateFormat中又没有设置pattern的方法。于是在根据DateFormat的帮助说明修改那条语句为两句
DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.CHINA);
Date date = df.parse("2005-6-30");
再次跟踪,这次显示出df变量类型是SimpleDateFormat。以前没注意,早知道,直接用SimpleDateFormat了。这次的pattern的值成了“yyyy-M-dd”。因此,代码执行通过。
通过此次总结两个经验,一、知道如何在Eclipse中利用breakpoint进行debug,并查看runtime时varible的值。比以前只会System.out.println()更深一层掌握Eclipse的使用。二、可能jdk1.5比jdk1.4在java.text.DateFormat的使用上有了一些改动。以后要用到解析日期的处理,还是改用SimpleDateFormat了。
下面是改正后的代码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd");
sdf.parse( request.getParameter("chrq") );
Calendar chrq = sdf.getCalendar();