日期:2014-05-20  浏览次数:20824 次

把这个两个String转换为需要的时间出错?
一个是:2013.05.08 13:30:15

一个是:2013 05 14 14:17:25

因为都是String,所以我想先转换为Date,这样不对啊?
 DateFormat format = new SimpleDateFormat("yyyy MM dd hh:mm:ss");
       format.setLenient(false);
       String s = "2013.05.08 13:30:15";
       Timestamp ts = new Timestamp(format.parse(s).getTime());
       System.out.println(ts.toString());


会报转为异常错误。

------解决方案--------------------
HH好大写,修改后代码如下:

DateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");  //这里修改了
format.setLenient(false);
String s = "2013.05.08 13:30:15";
Timestamp ts = new Timestamp(format.parse(s).getTime());
System.out.println(ts.toString());

------解决方案--------------------
异常才对
2013.05.08 13:30:15
yyyy MM dd hh:mm:ss
你看上下格式一样么?

String s = "2013.05.08 13:30:15";
DateFormat format = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss");
    Date date = null;
try {
date = format.parse(s);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    System.out.println(date.toString());

------解决方案--------------------
在eclipse中运行程序,会报如下错误,表示日期无法解析。
    Exception in thread "main" java.text.ParseException: Unparseable date: "2013.05.08 13:30:15"
at java.text.DateFormat.parse(DateFormat.java:357)
at program.Test.main(Test.java:15)

在Java API中,DateFormat的setLenient(false)方法确保严格的日期格式,可以看到代码中,

"2013.05.08 13:30:15"和指定的日期格式"yyyy MM dd hh:mm:ss"并不匹配,应当更改其中任意一项。
更改代码如下:
(1)更改指定日期格式,另外表示24小时制使用大写的H
		   DateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
       format.setLenient(false);
       String s = "2013.05.08 13:30:15";
       Timestamp ts = new Timestamp(format.parse(s).getTime());
       System.out.println(ts.toString());

(2)更改指定字符串,12小时制仍可以使用小写的h
		   DateFormat format = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss");
       format.setLenient(false);
       String s = "2013.05.08 01:30:15";
       Timestamp ts = new Timestamp(format.parse(s).getTime());
       System.out.println(ts.toString());