Problem Introduction:
When attempting to parse a String in the "YYYY-MM-dd HH:mm" format using SimpleDateFormat, users may encounter incorrect date and time outcomes. Specifically, the parsed date may not match the expected date.
Question:
Why does SimpleDateFormat incorrectly parse dates in the "YYYY-MM-dd HH:mm" format? How can this issue be resolved?
Answer:
SimpleDateFormat uses case-sensitive pattern letters to parse input strings. For the year format, "YYYY" represents the full year with leading zeros, while lowercase "yyyy" represents the year without leading zeros. In the provided code, the pattern letter "YYYY" was incorrectly used, leading to unexpected date parsing.
Solution:
To correctly parse the date and time, use lowercase "yyyy" in the pattern:
<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>
With this correction, the code will parse dates in the expected format without any issues.
Additional Considerations:
When using SimpleDateFormat, carefully check the pattern letters to ensure they match the desired format. Refer to the Java API documentation for a complete list of pattern letters and their corresponding date/time formats.
Database Update:
Regarding the issue where time is reset to 00:00 when updating a date in a database, ensure that the database column datatype and the Java date object's time component are compatible. If the database column only stores the date, the time component in the Java object will be ignored upon insertion.
The above is the detailed content of Why Does SimpleDateFormat Incorrectly Parse Dates in the \'YYYY-MM-dd HH:mm\' Format, and How Can This Issue Be Resolved?. For more information, please follow other related articles on the PHP Chinese website!