【问题】解析字符串为Date类型:出现如题错误?
1.代码片段
//添加:新建一个对象
static final SimpleDateFormat sdf = new SimpleDateFormat("dd MMM,yyyy");
……
Date expDeliDate=sdf.parse( request.getParameter("expectedDeliDate") );----------------
错误信息
Caused by: java.text.ParseException: Unparseable date: "16/10/2013"
at java.text.DateFormat.parse(DateFormat.java:335)
at com.ppet.cart.CartSvc.updateExtra(CartSvc.java:132)
at com.ppet.cart.action.CartInfoSaveAction.updateExtra(CartInfoSaveAction.java:41)
... 23 more
2.看了网上的一个帖子:试了一下,结果还是出现这个错误!! 
(http://blog.sina.com.cn/s/blog_b694075d0101aabp.html)当用java将字符串格式转换成date类型时,自己定义一个String d = "2010/05/19"时,用语句转换:   SimpleDateFormat sdf =   new SimpleDateFormat( "yyyy/MM/dd HH:mm:ss" );
   String ddd = "2009/10/19 00:00:00";
   try {
       Date d = sdf.parse(ddd);
   } catch (ParseException e) {
   // TODO Auto-generated catch block
     e.printStackTrace();
   }不会抛出java.text.ParseException: Unparseable date: "2009/10/19 00:00:00"
at java.text.DateFormat.parse(DateFormat.java:337)
at com.come.Dates.main(Dates.java:14)
异常但是当字符串是用String startDate = request.getParameter("startDate");传过来时会报异常解决方法:
一:Date startReportDate = sdf.parse(startDate.toString());对字符串进行toString 不明白为什么二:Date start = (Date)sdf.parseObject(startDate);可以解决 解析字符串为Date类型

解决方案 »

  1.   

    你输入一下startDate.toString()看效果就知道了。。
    你输入值如果是16/10/2013形式的话
    那么应该
    static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");这样吧。。
      

  2.   

    谢谢~1.表单的日期:是用了js的日期选择器;(格式是dd/MM/yyyy)
    2.那我要是想解析成dd MMM,yyyy格式,该怎么做?
      

  3.   

    中间依靠Date过渡一下。public static void main(String[] args) {
    try {
    String olddate="16/10/2013";
    SimpleDateFormat sdf1=new SimpleDateFormat("dd/MM/yyyy");
    SimpleDateFormat sdf2=new SimpleDateFormat("dd MMM,yyyy");

    Date parse = sdf1.parse(olddate);
    String string = sdf2.format(parse).toString();
    System.out.println(string);


    } catch (ParseException e) {
    e.printStackTrace();
    }
    }
    结果:16 十月,2013
      

  4.   


    日历控件都会有格式化的方法,实在找不到可以这么处理String dateStr = "2010/05/19";
    String[] date = dateStr.split("/");
    String d = date[2] + " " + date[1] + "," + date[0];//dd MM,yyyy
      

  5.   

    中间依靠Date过渡一下。public static void main(String[] args) {
    try {
    String olddate="16/10/2013";
    SimpleDateFormat sdf1=new SimpleDateFormat("dd/MM/yyyy");
    SimpleDateFormat sdf2=new SimpleDateFormat("dd MMM,yyyy");

    Date parse = sdf1.parse(olddate);
    String string = sdf2.format(parse).toString();
    System.out.println(string);


    } catch (ParseException e) {
    e.printStackTrace();
    }
    }
    结果:16 十月,2013

    谢谢,你回复之后我想了一下,刚好和你说的一样,呵呵~
      

  6.   

    一直都是可以的,只不过楼主写错了,多了一个M参数。。
    static final SimpleDateFormat sdf = new SimpleDateFormat("dd MMM,yyyy");