在jdbc中将java日期转换为sql日期

时间:2015-12-09 11:07:25

标签: java spring date jdbc jdbctemplate

  for (final Object[] obj : leaveObjects) {
             for (int i = 0; i < obj.length; i++){
     try {

            jdbcTemplate.update(new PreparedStatementCreator() {
                public PreparedStatement createPreparedStatement(
                        Connection connection) throws SQLException {
                    PreparedStatement ps = connection.prepareStatement(sql,
                            new String[] { "pk_CompOff_compOffId" });
                    ps.setInt(1,  (Integer)obj[0]);
                    ps.setInt(2,  (Integer)obj[1]);
                    ps.setInt(3,  (Integer)obj[2]);
                    ps.setInt(4, (Integer) obj[3]  );
                    try {
                        ps.setDate(5, new java.sql.Date(formatter.parse(obj[4].toString()).getTime()));
                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

我试图使用上面的代码使用spring jdbc模板将这个日期从java保存到数据库,但是得到了这个异常:

java.text.ParseException: Unparseable date: "Sun Feb 15 00:00:00 PST 2015"。 我正在使用这个格式化程序

 SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");

我如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

改变:

SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");

为:

SimpleDateFormat formatter = new SimpleDateFormat("EEEE MMM dd HH:mm:ss z yyyy");

注意:

  1. a由z
  2. 取代
  3. 删除逗号
  4. 某些字段有chnaged places
  5. a用于AM/PMz用于Time zone(例如 PST

    有关更多参考,请查看此文档:

    http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

答案 1 :(得分:0)

您也必须使用区域设置,否则它将不会在每个区域设置中运行。

试试这个

SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);