[英]How to get date from html form to servlet
我有一個HTML表單,我有一個日期和時間選擇器。 我想要做的是通過servlet中的request.getParameter
獲取日期和時間,然后將其插入到我的數據庫中。 如何以日期和時間格式獲取日期和時間,或者將它們作為字符串然后解析它們。
碼:
String[] quantity = request.getParameterValues("Quantity_field");
java.util.Date selectedDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("deliveryDate")); //using this one i am trying to get date but it is showing error
java.util.Date selectedTime = new SimpleDateFormat("hh:mm:ss").parse(request.getParameter("deliveryTime"));
System.out.println(selectedDate);
java.util.Date dateUtil = new Date();
java.sql.Date dateSql = new java.sql.Date(dateUtil.getTime());
java.sql.Timestamp timestamp = new Timestamp(dateUtil.getTime());
try {
con = DBConnection.createConnection();
statement = con.createStatement();
String query = " insert query VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement ps = con.prepareStatement(query);
for (int i = 0; i < quantity.length; i++) {
if (Double.parseDouble(quantity[i]) != 0) {
if(recorderNo!=0)
{
ps.setInt(1, recorderNo);
}
else
{
ps.setInt(1, 1);
}
ps.setDate(2, dateSql);
ps.setString(3, 77);
ps.setDouble(4, 55);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.setDouble(7, Double.parseDouble(quantity[i]));
ps.setInt(8, 0);
ps.setInt(9, 0);
ps.setInt(10, 0);
ps.setString(11, outlet);
ps.setTimestamp(12, timestamp);
ps.setDate(13,selectedDate); // here i am trying to put date
ps.setTime(14,selectedTime);// and here time
ps.addBatch();
}
}
ps.executeBatch();
我在谷歌上發現了這個以獲取日期和時間,但它在以下情況下拋出錯誤:
ps.setDate(13,selectedDate);
ps.setTime(14,selectedTime);
錯誤是:
PreparedStatement類型中的方法setDate(int,java.sql.Date)不適用於參數(int,java.util.Date)
編輯
我這樣做
java.util.Date selectedDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("deliveryDate"));
java.util.Date selectedTime = new SimpleDateFormat("hh:mm:ss").parse(request.getParameter("deliveryTime"));
java.sql.Date dateSelected = new java.sql.Date(selectedDate.getTime());
java.sql.Time dateTime=new Time(selectedTime.getTime());
但上面的行是投擲錯誤,我想我錯過了什么或寫錯了
您有兩個不同的Date對象(util.Date和sql.Date),因此您需要從util.Date轉換為sql.Date以使用setDate方法。
您的java.util.Date selectedDate
是java.util.Date
類型,而PreparedStatement的setDate(int, java.sql.Date)
方法需要java.sql.Date
類型。 所以將java.util.Date
轉換為java.sql.Date
您可以添加以下行:
java.util.Date selectedDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("deliveryDate"));
java.util.Date selectedTime = new SimpleDateFormat("hh:mm:ss").parse(request.getParameter("deliveryTime"));
// Add the lines below
java.sql.Date selectedSQLDate = new java.sql.Date(selectedDate.getTime());
java.sql.Time selectedSQLTime = new java.sql.Time(selectedTime.getTime());
所以你的代碼將是:
// Other codes
try {
String[] quantity = request.getParameterValues("Quantity_field");
java.util.Date selectedDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("deliveryDate"));
java.util.Date selectedTime = new SimpleDateFormat("hh:mm:ss").parse(request.getParameter("deliveryTime"));
// Add the lines below
java.sql.Date selectedSQLDate = new java.sql.Date(selectedDate.getTime());
java.sql.Time selectedSQLTime = new java.sql.Time(selectedTime.getTime());
con = DBConnection.createConnection();
statement = con.createStatement();
String query = " insert query VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement ps = con.prepareStatement(query);
for (int i = 0; i < quantity.length; i++) {
if (Double.parseDouble(quantity[i]) != 0) {
if(recorderNo!=0)
{
ps.setInt(1, recorderNo);
}
else
{
ps.setInt(1, 1);
}
ps.setDate(2, dateSql);
ps.setString(3, 77);
ps.setDouble(4, 55);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.setDouble(7, Double.parseDouble(quantity[i]));
ps.setInt(8, 0);
ps.setInt(9, 0);
ps.setInt(10, 0);
ps.setString(11, outlet);
ps.setTimestamp(12, timestamp);
ps.setDate(13,selectedDate); // here i am trying to put date
ps.setTime(14,selectedTime);// and here time
ps.addBatch();
}
}
ps.executeBatch();
// Other codes
} catch (Exception e){
// TODO Auto-generated catch block
}
但我建議你使用java.time
類而不是舊的java.util.Date
和java.sql.Date
與JDBC 4.2或更高版本。 請參閱此了解詳情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.