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