3

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

当我转换

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

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

我进入 1961 年 4 月 20 日的地方。然后我需要在将其保存java.util.datejava.sql.dateMySQL 之前将其转换为:

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

请问如何获得正确的日期(即 sql 日期的 1961-04-20)?

此外,如果日期为 null 并引发异常。请问我该如何解决?

4

2 回答 2

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));
于 2013-06-27T05:19:31.417 回答
2

这段代码对我来说很好。

您遇到此问题是因为您将格式定义为dd-MM-yyyy并将日期输入为 20/04/1961。注意格式“-”与“/”的变化。

于 2013-06-27T12:10:23.417 回答