
SimpleDateFormat Producing Incorrect Date and Time When Parsing "YYYY-MM-dd HH:mm"
When attempting to convert a String representation of a date and time in the format "YYYY-MM-dd HH:mm" to a Date object using SimpleDateFormat, incorrect results may be obtained. As illustrated below, the code produces an unexpected output:
<code class="java">Date newDate = null;
String dateTime = "2013-03-18 08:30";
SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd HH:mm", Locale.ENGLISH);
df.setLenient(false);
try {
newDate = df.parse(dateTime);
} catch (ParseException e) {
throw new InvalidInputException("Invalid date input.");
}</code>The expected output should be "Thu Mar 18 08:30:00 EST 2013", but the code mistakenly produces "Sun Dec 30 08:30:00 EST 2012".
The cause of the issue lies in the mistyped YYYY pattern in the SimpleDateFormat constructor. The correct pattern for the specified date and time format is yyyy, with lowercase y for years.
To resolve this issue, modify the SimpleDateFormat pattern as follows:
<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>By updating the pattern, the SimpleDateFormat object will now correctly parse the date and time string, resulting in the desired output of "Thu Mar 18 08:30:00 EST 2013".
It's important to note that while Lenient is off in this code, it is generally not recommended to turn it off. In most cases, it is better to handle parsing errors gracefully rather than potentially parsing incorrect data.
The above is the detailed content of Why does SimpleDateFormat produce the wrong date and time when parsing \'YYYY-MM-dd HH:mm\'?. For more information, please follow other related articles on the PHP Chinese website!
How to convert nef to jpg format
head command usage
What does DOS operating system mean?
What are the common management systems?
What is the reason why the computer screen is black but the computer is on?
How to solve error1
How to open Computer Network and Sharing Center
How to implement color fonts in css