解析字符串到目前为止:非法模式字符'T'.

mbe*_*tea 11 java string date simpledateformat

我需要在java中解析一个字符串.我的字符串具有以下格式:

2014-09-17T12:00:44.0000000Z
Run Code Online (Sandbox Code Playgroud)

但Java试图解析这种格式时抛出以下异常... java.lang.IllegalArgumentException: Illegal pattern character 'T'.

关于如何解析的任何想法?

谢谢!

Men*_*ild 25

鉴于您的输入2014-09-17T12:00:44.0000000Z,仅仅逃避信件是不够的T.你还必须处理尾随Z.但请注意,这Z不是文字,但具有UTC+00:00时区偏移的含义ISO-8601-standard.逃避Z是不正确的.

SimpleDateFormatZ通过模式符号处理这个特殊的字符X.所以最终的解决方案如下:

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSX");
 Date d = sdf.parse("2014-09-17T12:00:44.0000000Z");
 System.out.println(d); // output: Wed Sep 17 14:00:44 CEST 2014
Run Code Online (Sandbox Code Playgroud)

请注意,不同的时钟时间适用于时区CEST(toString()使用系统时区),结果相当于UTC-time 12:00:44.此外,我必须插入七个符号S,以便正确处理您的输入,假装精度低至100ns(尽管Java pre 8只能处理毫秒).


Xav*_*tte 12

你必须逃避'T'字符:

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
    format.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date parse = format.parse("2014-09-17T12:00:44.0000000Z");
Run Code Online (Sandbox Code Playgroud)

使用答案:这个日期格式是什么?2011-08-12T20:17:46.384Z