将日期字符串解析为 java.util.Date 时出现非法模式字符 'T'
将日期字符串解析为 java.util.Date。日期对象需要遵循特定规则的模式。一种常见模式是“yyyy-MM-ddThh:mm:ssZ”,它表示 ISO 8601 格式的日期。
问题:
使用指定模式时,例外情况是抛出消息“java.lang.IllegalArgumentException:非法模式字符'T'."
原因:
模式中的 'T' 表示日期和时间部分之间的分隔符。然而,在Java的SimpleDateFormat中,'T'字符需要在两边加上单引号进行转义才能正确识别。
解决方案1:转义Pattern中的'T'
要使用原始模式解决问题,请转义“T”字符,如下所示:
String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";
解决方案 2:使用 ISO_8601_24H_FULL_FORMAT
或者,您可以使用由Q2597083 class:
String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;
对于 Java 8 及更高版本:
对于 Java 8 及以上版本,建议使用 DateTimeFormatter 类而不是 SimpleDateFormat 和 Instant 而不是 Date。这是一个例子:
import java.time.Instant; import java.time.format.DateTimeFormatter; String dateString = "2010-10-02T12:23:23Z"; DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; Instant d = Instant.parse(dateString); System.out.println(d.getYear());
通过使用这些解决方案,您可以成功解析 ISO 8601 格式的日期字符串,而不会遇到“非法模式字符 'T'”异常。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3