setDate
のパラメータとして渡されているときに、Java LocalDate
を特定の形式に変換する次のコードがあります。javaのsetDateの不正な引数の例外
LocalDate localDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy");
String formattedString = localDate.format(formatter);
storedProcedureCall.setDate(1, java.sql.Date.valueOf(formattedString));
は、しかし、それは常に私が行うとき、私はsetDate
の引数でformattedString
含めるとIllegalArgumentException
投げるが、正常に動作します:一般的に
storedProcedureCall.setDate(2, java.sql.Date.valueOf(java.time.LocalDate.now()));
:
storedProcedureCall.setDate(2, java.sql.Date.valueOf(java.time.LocalDate.now())); // working
storedProcedureCall.setDate(2, java.sql.Date.valueOf(formattedString)); // not working
[Javadocの]から( https://docs.oracle.com/javase/7/docs/api/java/sql/Date.html#valueOf(java.lang.String)): "例外: ' IllegalArgumentException' - if指定された日付はJDBCの日付エスケープ形式(yyyy- [m] m- [d] d)ではありません " –
調査の証拠がないので、私はこの質問をdownvotedしました。あなたの質問を編集して、あなたが行った研究と難しいところを正確に*含めるようにしてください。あなたがこれを行うことができれば、私は私のdownvoteを撤回するかもしれません。 –
現在の日付を保存する必要がある場合は、 'java.sql.Date.valueOf(LocalDate.now())'を使用してください。 'setDate'メソッドは' Date'をパラメータとし、日付オブジェクトは**フォーマットなし**です(https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-日付)。後でこの値を別の形式で*表示する場合は、 'DateTimeFormatter'の' format'メソッドを使って 'Date'を' String'に変換します。 –