2015-12-09 3 views
-1
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(); 
        } 

Я пытаюсь сохранить эту дату с Явы в базу данных с помощью шаблона пружинного JDBC, используя код выше, но получает это исключение:Преобразование даты Java в дату SQL в JDBC

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

Как я могу решить это?

+1

Можете ли вы показать код, где вы создаете форматер? – chokdee

+1

проблема ваша fomatter нет, sql date – nafas

+0

@chokdee форматирование опубликовано – saurabh

ответ

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. а заменяется на г
  2. запятые удалены
  3. некоторых полей имеют место chnaged

a, используемое для AM/PM, где в качестве z, используемых для Time zone (например, PST)

Для получения дополнительной справки, проверить эту документацию:

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

+0

Интересно, не изменил ли это @chokdee этот ответ. – Tom

+0

@Tom бьет меня, я думаю, что ответ верный с достаточным объяснением ... – nafas

0

Вы должны использовать локаль тоже, в противном случае он не будет работать в любой местности.

Попробуйте

SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US); 
Смежные вопросы