0

我正在使用以下代码获取当前日期和时间,但输出不是我所期望的,我无法将其保存到数据库中。

输出 >> 当前:Tue Mar 05 09:58:26 EST 2013

预期产出>>当前:2013-03-05 9:58:26

 .....{  
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        try {
            System.out.println("current: " +parseFormat.parse(dateFormat.format(date)));
            return parseFormat.parse(dateFormat.format(date));
        } catch (ParseException ex) {
            Logger.getLogger(ConstructionModel.class.getName()).log(Level.SEVERE, null, ex);
        }
        return date;
     }
        ......

        ps.setDate(....) <<< failed

数据库

 name   type
 mydate Date
4

3 回答 3

3

您不需要在格式化之前解析:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date = new Date();

String frmtdDate = dateFormat.format(date);

System.out.println("frmtdDate: " + frmtdDate);

但是,如果您尝试将日期放入某些 DB 语句中,则不应以文本形式执行此操作,而应使用使用java.sql.Datejava.sql.Timestamp

于 2013-03-04T23:09:07.703 回答
2

您需要使用 sql 时间戳来保存到数据库。将您的 java.util.Date 转换为java.sql.Timestamp

ps.setTimestamp(new java.sql.Timestamp(myDate.getTime()));
于 2013-03-04T23:10:07.220 回答
2

format takes a Date and returns a formatted String. parse takes a formatted String and returns a Date object. When you do parseFormat.parse(dateFormat.format(date)) you are converting Date to String and to Date again. The value that is printed is the default representation provided by Date.toString() instead of the formatted string.

       System.out.println("current: " +dateFormat.format(date));
于 2013-03-04T23:12:45.507 回答