将日期字符串解析为 java.util.Date 时出现非法模式字符“T”
问题:
当尝试解析日期字符串时,例如“2010-10-02T12:23:23Z”使用Java Date API,抛出异常:“java.lang.IllegalArgumentException:非法模式字符'T'”。为什么会出现这种情况,是否需要手动拆分解析字符串?
答案:
字符串中的‘T’字符,代表时间分隔符,是问题的原因。要解决此问题,需要在模式字符串中使用单引号 ('') 转义“T”字符。正确的模式应该是“yyyy-MM-dd'T'hh:mm:ssZ”。
示例:
String date = "2010-10-02T12:23:23Z"; String pattern = "yyyy-MM-dd'T'hh:mm:ssZ"; SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { Date d = sdf.parse(date); System.out.println(d.getYear()); } catch (ParseException e) { e.printStackTrace(); }
或者,对于 Java 8 及更高版本,建议请改用 Instant.parse,它提供了一种更强大、更现代的日期解析方法。
Instant.parse("2015-04-28T14:23:38.521Z")
以上是为什么在 Java 的 Date API 中解析'2010-10-02T12:23:23Z”会抛出'非法模式字符'T'”?的详细内容。更多信息请关注PHP中文网其他相关文章!