如何在Java中将日历转换为java.sql.Date?

Calendar cal; String sql = "INSERT INTO ttable (dt) values (?);" //dt is a dateTime field in ttable PreparedStatement stmt = connection.prepareStatement(sql); stmt = setDate(1,cal); //not working stmt.execute(); stmt.close(); 

我想将cal转换为一个Datetypes插入到表中。

有一个getTime方法(不确定为什么它不叫getDate)。

编辑:刚刚意识到你需要一个java.sql.Date。 其中一个使用cal.getTimeInMillis()的答案就是你所需要的。

你有没有尝试cal.getTime() ? 这得到date表示。

你可能也想看看javadoc。

使用stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis()))

转换很容易,设置date和时间有点棘手。 这是一个例子:

 Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2000); cal.set(Calendar.MONTH, 0); cal.set(Calendar.DAY_OF_MONTH, 1); cal.set(Calendar.HOUR_OF_DAY, 1); cal.set(Calendar.MINUTE, 1); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); stmt.setDate(1, new java.sql.Date(cal.getTimeInMillis())); 

以下是将Calendar值转换为Date实例的简单方法。

 Calendar C = new GregorianCalendar(1993,9,21); Date DD = C.getTime(); System.out.println(DD); 

我发现这个代码的作品:

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss"); Calendar calendar = new GregorianCalendar(2013,0,31); System.out.println(sdf.format(calendar.getTime())); 

你可以在本教程中find其余部分:
http://www.mkyong.com/java/java-date-and-calendar-examples/

stmt.setDate(1, new java.sql.Date(cal.getTime().getTime()));