2013-04-05 2 views
0

Я получаю свой ввод даты как строку в формате dd-mm-yy через страницу jsp. Потому что этот формат лучше понять. Но теперь я хочу сохранить дату в формате yyyy-MM-dd HH:mm:ss в моей базе данных. Я использую следующий код.Как изменить формат даты в java?

try 
    {  
    String s="30-04-2013"; 
    SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    d1=new SimpleDateFormat("yyyy-MM-dd").parse(s); 
    System.out.println(d1); 
    System.out.println(ft.format(d1)); 
    } catch(Exception e) { 
     System.out.println("Exception:"+e); 
    } 

Мой Jsp формат даты dd-mm-yy, но он дает ответ, как

Tue Oct 04 00:00:00 IST 35 
0035-10-04 00:00:00 

, что это моя ошибка? может сообщить мне кого угодно

спасибо.

+0

Дата в базе данных не имеет никакого формата. Используйте PreparedStatement.setDate() или PreparedStatement.setTimestamp(), чтобы сохранить объект Date или Timestamp. –

ответ

1
d1=new SimpleDateFormat("yyyy-MM-dd").parse(s); 

должен быть

d1=new SimpleDateFormat("dd-MM-yyyy").parse(s); 

, поскольку дата ввода строки вы ввели String s="30-04-2013"; имеет формат, dd-MM-yyyy. Следовательно, чтобы разобрать это, вы должны указать формат dd-MM-yyyy в SDF.

+0

И с помощью 'setLenient (false)' он также быстрее подберет проблему, так как ваша дата «перевернется», чтобы соответствовать вашему шаблону. – radimpe

+0

его работы. Спасибо. –

+0

Рад помочь! :) – SudoRahul

0

Измените формат в своем коде от yyyy-MM-dd до dd-MM-yyyy. Простая отладка решила бы эту проблему.

0

См. Ниже рабочую программу. См. Метод разбора и форматирования.

import java.text.SimpleDateFormat; 
public class DateParsing { 

    public static void main(String args[]) { 

     String s = "30-04-2013"; 
     SimpleDateFormat ft = new SimpleDateFormat("dd-MM-yyyy"); 
     SimpleDateFormat nt = new SimpleDateFormat("yyyy-MM-dd"); 
     try { 
      System.out.println(nt.format(ft.parse(s))); 
     } 

     catch (Exception e) { 
      System.out.println("Exception:" + e); 
     } 
    } 

} 
+0

НЕТ! вы используете нижний регистр m за минуты http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html – DDK

+0

Да нижний регистр m для минут @DDK является правильным. – 9ine

0

я думаю, что вам нужно передать объект Date в формат() метода класса SimpleDateFormat вместо прохождения строки к нему

просто пытаются сделать как следующий

SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
String formatted_date = ft.format(new Date()); 
System.out.println(formatted_date); 

дайте мне знать статус

счастливый код

+0

'd1' - только объект Date. – SudoRahul

Смежные вопросы