Illegal Pattern Character 'T' When Parsing Date String to java.util.Date
Parsing a date string to a java.util.Date object requires a pattern that adheres to specific rules. One common pattern is "yyyy-MM-ddThh:mm:ssZ," which represents dates in ISO 8601 format.
Problem:
When using the specified pattern, an exception is thrown with the message "java.lang.IllegalArgumentException: Illegal pattern character 'T'."
Reason:
The 'T' in the pattern represents a separator between the date and time components. However, in Java's SimpleDateFormat, the 'T' character needs to be escaped with single quotes on either side to be recognized correctly.
Solution 1: Escape 'T' in Pattern
To resolve the issue using the original pattern, escape the 'T' character as follows:
String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";
Solution 2: Use ISO_8601_24H_FULL_FORMAT
Alternatively, you can use the pre-defined ISO_8601_24H_FULL_FORMAT constant provided by the Q2597083 class:
String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;
For Java 8 and Higher:
For Java 8 and above, it is recommended to use the DateTimeFormatter class instead of SimpleDateFormat and Instant instead of Date. Here's an example:
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());
By using these solutions, you can successfully parse date strings in ISO 8601 format without encountering the "Illegal pattern character 'T'" exception.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3