首页 > 解决方案 > 如何从 html 表单获取日期到 servlet

问题描述

我有一个 HTML 表单,其中有一个日期和时间选择器。我要做的是通过request.getParameterservlet 获取日期和时间,然后将其插入到我的数据库中。如何以日期和时间格式获取该日期和时间,或者将它们作为字符串获取然后解析它们。

代码:

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();

我在 Google 上找到了这个来获取日期和时间,但它在以下位置抛出错误:

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());

但以上几行抛出错误,我想我错过了什么或写错了什么

标签: javaservlets

解决方案


您有两个不同的 Date 对象(util.Date 和 sql.Date),因此您需要从 util.Date 转换为 sql.Date 才能使用 setDate 方法。

这篇文章中的解释


推荐阅读