我在字符串中有日期我想将其转换为日期格式但我收到了错误

时间:2014-05-05 06:11:36

标签: java string date

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"

4 个答案:

答案 0 :(得分:2)

格式错误:

DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

here

修改:

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