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.
The above is the detailed content of Why Does Parsing a Date String in Java Throw 'Illegal pattern character 'T''?. For more information, please follow other related articles on the PHP Chinese website!