从java.util.date转换为java.sql.date时返回的日期不正确

时间:2013-06-27 04:43:24

标签: java eclipse gwt

我正在使用Eclipse Juno,GWT和java。

当我转换

我通过以下方式获取日期:

dateBoxDOB = new DateBox();
dateBoxDOB.setFormat(new DefaultFormat(DateTimeFormat.getFormat("dd-MM-yyyy")));
flexTable.setWidget(0, 1, dateBoxDOB);
dateBoxDOB.getDatePicker();

我输入20/04/1961。然后我需要将它从java.util.date转换为java.sql.date,然后再保存到MySQL:

java.sql.Date sqlDOB = new java.sql.Date(dateBoxDOB.getValue().getTime());
Window.alert("Util date = " + dateBoxDOB.getValue().getTime());    
Window.alert("DOB = " + sqlDOB);
java.sql.Date sqlDateArchived = new java.sql.Date(dateBoxArchived.getValue().getTime());
java.sql.Date sqlPackIn = new java.sql.Date(dateBoxPackIn.getValue().getTime());
java.sql.Date sqlPackOut = new java.sql.Date(dateBoxPackOut.getValue().getTime());

窗口提示显示的日期为-233920800000 for util1962-08-04 for sql

我如何获得正确的日期(即1961-04-20从sql日期开始)?

此外,如果日期为null并且抛出异常。我该如何解决这个问题呢?

2 个答案:

答案 0 :(得分:2)

这可能对您有所帮助

    Calendar cal = Calendar.getInstance();
    DateFormat df=new SimpleDateFormat("dd/mm/yyyy");
    String dateStr="20/04/1961";
    Date date = df.parse(dateStr);
    cal.setTime(date);
    Date sqlDate = new java.sql.Date(cal.getTime().getTime());
    System.out.println("utilDate:" + df.format(date));
    System.out.println("sqlDate:" + df.format(sqlDate));

答案 1 :(得分:2)

此代码适用于我。

您遇到此问题是因为您将格式定义为dd-MM-yyyy并输入日期为20/04/1961。请注意格式' - 'vs'/'。

的更改