String stringDate="2014-03-20T17:59:03+07:00";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date startDate = df.parse(stringDate);
但是我收到一个错误,java.text.ParseException:Unparseable date:" 2014-03-20T17:59:03 + 07:00"
答案 0 :(得分:2)
格式错误:
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
修改:
String stringDate="2014-03-20T17:59:03+07:00";//2014-03-20T17:59:03+07:00 2014-03-20T17:59:03-07:00
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try {
Date startDate = sdf.parse(stringDate);
System.out.println(startDate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 1 :(得分:0)
看看你要求解析df的格式,以及你要给它的格式。 stringDate的格式为“yyyy-mm-ddThh:mm:33 + ss:ss”,但是df期望“dd / mm / yyyy HH:mm:ss”。要解决此问题,请更改输入格式或df。
的格式答案 2 :(得分:0)
用于解析您正在寻找的格式字符串是yyyy-MM-dd'T'HH:mm:ssZ
,但是Z
期望时区的格式为+0700
,而不是+07:00
,所以你需要先做一些字符串替换,以摆脱冒号。
String stringDate = "2014-03-20T17:59:03+07:00";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Date startDate = df.parse(stringDate.replaceAll("([+-]\\d{2}):(\\d{2})$", "$1$2"));
System.out.println(startDate); // output "Thu Mar 20 11:59:03 CET 2014" in my time zone
答案 3 :(得分:0)
Joda-Time库直接接受这些ISO 8601字符串,并使用内置格式化程序进行解析。
DateTime dateTime = new DateTime( "2014-03-20T17:59:03+07:00" );
如果你真的需要一个java.util.Date对象(最好尽可能避免j.u.Date),转换。
java.util.Date date = dateTime.toDate();