繁体   English   中英

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

[英]I have date in string i want to convert it into date format but i got an error

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”

格式错误:

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

看一下你要求解析df的格式,以及你要给它的格式。 stringDate的格式为“yyyy-mm-ddThh:mm:33 + ss:ss”,但是df期望“dd / mm / yyyy HH:mm:ss”。 要解决此问题,请更改输入的格式或df的格式。

解析你正在寻找的格式字符串是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

Joda-Time库直接接受这些ISO 8601字符串,使用内置格式化程序进行解析。

DateTime dateTime = new DateTime( "2014-03-20T17:59:03+07:00" );

如果你真的需要一个java.util.Date对象(当你可以时最好避免使用juDate),转换。

java.util.Date date = dateTime.toDate();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM