解析字符串到现在:非法模式字符“T”。

2022-09-03 03:24:20

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

2014-09-17T12:00:44.0000000Z

但是java在尝试解析此类格式时会引发以下异常... 。java.lang.IllegalArgumentException: Illegal pattern character 'T'

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

谢谢!


答案 1

给定 的输入,仅转义字母是不够的。您还必须处理尾随。但请注意,这不是一个字面意思,而是具有时区偏移的含义。所以逃避是不正确的。2014-09-17T12:00:44.0000000ZTZZUTC+00:00ISO-8601-standardZ

SimpleDateFormat通过图案符号处理此特殊字符。所以最终的解决方案看起来像这样:ZX

 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

请注意,不同的时钟时间适合时区(使用系统时区),并且结果等效于 。此外,我必须插入七个符号S才能正确处理您的输入,该输入假装精度低至(尽管Java pre 8只能处理毫秒)。CESTtoString()UTC-time 12:00:44100ns


答案 2

您必须转义“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");

使用“答复”:此日期格式是什么? 2011-08-12T20:17:46.384Z