DateFormat的施用(java.text.ParseException: Unparseable date)(转载)

DateFormat的使用(java.text.ParseException: Unparseable date)(转载)

java.text.ParseException: Unparseable date: "11/10/10"
 at java.text.DateFormat.parse(DateFormat.java:337)

 

 

下面是可以运行的代码。

        Date date = new Date();
        System.out.println(date.toString());
       
        DateFormat df = new SimpleDateFormat ("yyyy-MM-dd");    
        Date d1 = df.parse("2001-01-01");
        System.out.println(d1.toString());
       
        DateFormat df2 = DateFormat.getDateInstance(DateFormat.SHORT);
        System.out.println(df2.format(new Date()));       
        Date d2 = df2.parse("11/10/10");
        System.out.println("DateFormat.SHORT: " + d2.toString());
       
        DateFormat df3 = DateFormat.getDateInstance(DateFormat.MEDIUM);
        System.out.println(df3.format(new Date()));       
        Date d3 = df3.parse("Nov 10, 2010");
        System.out.println("DateFormat.MEDIUM: " + d3.toString());
       
        DateFormat df4 = DateFormat.getDateInstance(DateFormat.LONG);
        System.out.println(df4.format(new Date()));       
        Date d4 = df4.parse("November 10, 2010");
        System.out.println("DateFormat.LONG: " + d4.toString());

 

结果如下:

Wed Nov 10 10:15:05 CST 2010
Mon Jan 01 00:00:00 CST 2001
11/10/10
DateFormat.SHORT: Wed Nov 10 00:00:00 CST 2010
Nov 10, 2010
DateFormat.MEDIUM: Wed Nov 10 00:00:00 CST 2010
November 10, 2010
DateFormat.LONG: Wed Nov 10 00:00:00 CST 2010

 

 上面的结果是我在英文系统的电脑里运行的。

要在中文系统的电脑运行,代码要如下:

 

Date date = new Date();
         System.out.println(date.toString());
        
         DateFormat df = new SimpleDateFormat ("yyyy-MM-dd");    
         Date d1 = df.parse("2001-01-01");
         System.out.println(d1.toString());
        
         DateFormat df2 = DateFormat.getDateInstance(DateFormat.SHORT);
         System.out.println(df2.format(new Date()));       
         Date d2 = df2.parse("11-10-10");
         System.out.println("DateFormat.SHORT: " + d2.toString());
        
         DateFormat df3 = DateFormat.getDateInstance(DateFormat.MEDIUM);
         System.out.println(df3.format(new Date()));       
         Date d3 = df3.parse("2010-11-10");
         System.out.println("DateFormat.MEDIUM: " + d3.toString());
        
         DateFormat df4 = DateFormat.getDateInstance(DateFormat.LONG);
         System.out.println(df4.format(new Date()));       
         Date d4 = df4.parse("2010年11月10日");
         System.out.println("DateFormat.LONG: " + d4.toString());

 

结果如下:

Wed Nov 10 20:24:28 CST 2010
Mon Jan 01 00:00:00 CST 2001
10-11-10
DateFormat.SHORT: Mon Oct 10 00:00:00 CST 2011
2010-11-10
DateFormat.MEDIUM: Wed Nov 10 00:00:00 CST 2010
2010年11月10日
DateFormat.LONG: Wed Nov 10 00:00:00 CST 2010

 

可以看到每个DateFormat的构造不同,放入DateFormat.parse(String str)这个函数的字符串不同。

但是DateFormat要放入和他规范的字符串格式,还要他去parse干啥! 脱裤子放屁——多此一举的感觉。

 

http://hongweiwang1984.blog.163.com/blog/static/272677620101010101351567/

 

 

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");这里的格式是
4位年 2位月 2位日 2位时 2位分 2位秒 共14位
但是你传入的字符串 只有12位 转换就出错了201104132200变成20110413220000就对了
输入的字符串要和你想要的格式长度神马的都一样才行
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
                        try {
   Date date = sdf.parse("20110413111100");
   String s = sdf.format(date);
   System.out.println(s);
  } catch (ParseException e) {
   e.printStackTrace();
  }