我有一个日期,我想以dd / mm / yyyy格式插入我的数据库(2014年12月25日)
我的代码接受一个Booking对象,其日期为其中一个字段。 我的代码在" Date currentDate = sd.parse(book.GetActualCheckInDate())中抛出错误;陈述说:
找不到适合于解析的方法(java.util.Date) 方法java.text.SimpleDateFormat.parse(java.lang.String,java.text.ParsePosition)不适用(实际和形式参数列表的长度不同) 方法java.text.DateFormat.parse(java.lang.String)不适用(实际参数java.util.Date不能通过方法调用转换转换为java.lang.String)
public int InsertBooking(Booking book) throws SQLException
{
int retCode = 2;
try
{
SimpleDateFormat sd = new SimpleDateFormat("dd/mm/yyyy");
Date currentDate = sd.parse(book.GetActualCheckInDate());
java.sql.Date sqlDate = new java.sql.Date(currentDate.getTime());
Connection conn = DriverManager.getConnection("jdbc:derby://localhost:1527/HotelDatabase");
Statement stmt = conn.createStatement();
String insertStatements = ("INSERT INTO BOOKING " +
"(BOOKINGID, ACTUALCHECKINDATE)" +
"VALUES " + "(" + book.GetBookingID() + "," + "'" + sqlDate + "'" + ")");
}
答案 0 :(得分:2)
我看到的第一个问题是SimpleDateFormat中的模式。在dd/mm/yyyy
mm 表示分钟。请改用dd/MM/yyyy
。
第二件事是,您是否尝试将字符串传递给DB上的Date字段。让JDBC完成工作,使用PreparedStatements解析为正确的数据库格式。
答案 1 :(得分:1)
book.GetActualCheckInDate()返回什么? 它必须是有效的日期格式化字符串。因为parse方法是将字符串格式的日期转换为Date Formate中的日期。
相反,如果您希望将Date转换为指定格式的日期字符串,则必须使用SimpleDateFormat的格式方法。查看以下解决方案
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateChecker {
public static void main(String[] args) {
try {
String someDate = "22/03/1991";
SimpleDateFormat strToDate = new SimpleDateFormat("dd/MM/yyyy");
Date currentDate = strToDate.parse(someDate);
System.out.println("Date is : " + currentDate);
String dateFormat = "yyyy-MM-dd HH:mm:ss.SSS";
SimpleDateFormat dateToStr = new SimpleDateFormat(dateFormat);
String formattedDate = dateToStr.format(currentDate);
System.out.println("Formated Date is : " + formattedDate);
} catch (Exception ex) {
System.out.println("Exception is : " + ex.getMessage());
}
}
}