Why does converting java.util.Date to java.sql.Date result in inaccurate dates?
P粉883278265
P粉883278265 2023-09-01 09:05:06
0
1
338

I am converting java.util.Date to java.sql.date in order to insert date of birth into mysql database.

However, entering 2001-04-03 always results in java.sql.Date being 2000-12-31

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter dob(YYYY-MM-DD) :"); String date = br.readLine(); SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD"); java.util.Date util_dob = dateFormat.parse(date); java.sql.Date dob = new java.sql.Date(util_dob.getTime()); 

Enter: 2001-04-03

Output: 2000-12-31

Expectation: 2001-04-03

P粉883278265
P粉883278265

reply all (1)
P粉237689596

Your format string is incorrect.

Please view the documentation forSimpleDateFormat:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat. html

  • Capital lettersY: Pattern lettersrepresentinganniversary
  • Capital lettersM: Pattern letters representing months of theyear(correct)
  • Capital lettersD: Pattern lettersrepresenting the number of days in theyear

You should use lowercase lettersyand lowercase lettersd.

  • Lowercase lettersy: Pattern lettersrepresentingyear
  • Lowercase lettersd: Pattern lettersrepresenting the number of days in themonth

I think your conversion should use the following pattern:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!