将日期字符串解析为 java.util.Date 时出现非法模式字符“T”
将日期字符串解析为 java.util.Date。日期对象需要遵守特定规则的模式。一种常见模式是“yyyy-MM-ddThh:mm:ssZ”,它表示 ISO 8601 格式的日期。
问题:
使用指定模式时,例外情况是抛出消息“java.lang.IllegalArgumentException:非法模式字符'T'."
原因:
模式中的 'T' 表示日期和时间部分之间的分隔符。然而,在Java的SimpleDateFormat中,'T'字符需要在两边加上单引号进行转义才能正确识别。
解决方案1:在模式中转义'T'
要使用原始模式解决问题,请将“T”字符转义为如下:
String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";
解决方案2:使用ISO_8601_24H_FULL_FORMAT
或者,您可以使用Q2597083提供的预定义ISO_8601_24H_FULL_FORMAT常量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'”异常。
以上是为什么在 Java 中解析日期字符串会抛出'非法模式字符'T'”?的详细内容。更多信息请关注PHP中文网其他相关文章!