解析字符串到现在:非法模式字符“T”。
2022-09-03 03:24:20
我需要在java中解析一个字符串到日期。我的字符串具有以下格式:
2014-09-17T12:00:44.0000000Z
但是java在尝试解析此类格式时会引发以下异常... 。java.lang.IllegalArgumentException: Illegal pattern character 'T'
关于如何解析它的任何想法?
谢谢!
我需要在java中解析一个字符串到日期。我的字符串具有以下格式:
2014-09-17T12:00:44.0000000Z
但是java在尝试解析此类格式时会引发以下异常... 。java.lang.IllegalArgumentException: Illegal pattern character 'T'
关于如何解析它的任何想法?
谢谢!
给定 的输入,仅转义字母是不够的。您还必须处理尾随。但请注意,这不是一个字面意思,而是具有时区偏移的含义。所以逃避是不正确的。2014-09-17T12:00:44.0000000Z
T
Z
Z
UTC+00:00
ISO-8601-standard
Z
SimpleDateFormat
通过图案符号处理此特殊字符。所以最终的解决方案看起来像这样:Z
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
请注意,不同的时钟时间适合时区(使用系统时区),并且结果等效于 。此外,我必须插入七个符号S才能正确处理您的输入,该输入假装精度低至(尽管Java pre 8只能处理毫秒)。CEST
toString()
UTC-time 12:00:44
100ns
您必须转义“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");