java.util.Date を java.sql.Date に変換すると日付が不正確になるのはなぜですか?
P粉883278265
2023-09-01 09:05:06
<p>mysql データベースに生年月日を挿入するために、java.util.Date を java.sql.date に変換しています。 </p>
<p>ただし、<code>2001-04-03</code> と入力すると、常に <code>java.sql.Date</code> が <code>2000-12-31</code> になります。 </p>
<pre class="brush:java;toolbar:false;">BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("dob(YYYY-MM-DD) を入力してください:");
文字列日付 = br.readLine();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD");
java.util.Date util_dob = dateFormat.parse(date);
java.sql.Date dob = 新しい java.sql.Date(util_dob.getTime());
</pre>
<p>「2001-04-03</p>」と入力します。
<p>出力: 2000-12-31</p>
<p>予想: 2001-04-03</p>
形式文字列が正しくありません。
SimpleDateFormat
のドキュメントを参照してください:
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat .html大文字- Y: anniversary を表すパターン文字
大文字 - M: 年の月を表すパターン文字 (正しい)
大文字 - D: 年の日数を表すパターン文字
小文字の
yと小文字の d を使用する必要があります。
小文字y- : year を表すパターン文字
小文字
d- : 月の日数を表すパターン文字
変換には次のパターンを使用する必要があると思います:
リーリー