从java.util.date转换为java.sql.date时返回的日期不正确
我正在使用EclipseJuno、GWT和java 当我皈依时 我通过以下方式获得日期:从java.util.date转换为java.sql.date时返回的日期不正确,java,eclipse,gwt,Java,Eclipse,Gwt,我正在使用EclipseJuno、GWT和java 当我皈依时 我通过以下方式获得日期: dateBoxDOB = new DateBox(); dateBoxDOB.setFormat(new DefaultFormat(DateTimeFormat.getFormat("dd-MM-yyyy"))); flexTable.setWidget(0, 1, dateBoxDOB); dateBoxDOB.getDatePicker(); 在这里,我输入1961年4月20日。然后我需要将它从ja
dateBoxDOB = new DateBox();
dateBoxDOB.setFormat(new DefaultFormat(DateTimeFormat.getFormat("dd-MM-yyyy")));
flexTable.setWidget(0, 1, dateBoxDOB);
dateBoxDOB.getDatePicker();
在这里,我输入1961年4月20日。然后我需要将它从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());
窗口警报显示的日期对于util是-23392080000,对于sql是1962-08-04
如何获取正确的日期(即,从sql日期算起的1961-04-20)
此外,如果日期为null并引发异常。请问我该怎么处理这件事?这可能对你有帮助
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));
这个代码对我来说很好用
您之所以收到此问题,是因为您将格式定义为dd-MM-yyyy
,并将日期输入为1961年4月20日。请注意格式“-”vs“/”的更改。是否尝试先格式化日期?首先将dateBoxDOB.getValue().getTime()存储在日期变量中,然后使用YY-MM-dd格式化,然后尝试逻辑。从uti.date到sql.date的转换看起来不错。。您的客户机和服务器在不同的地理位置吗?听起来好像您在某处有一个月/天的混淆。如果1961-04-20
中的20
被视为一个月而不是一天,那么日期将显示为1962年8月4日(20个月是1年8个月)。仔细检查你的格式和输入。嗨Kaushik,你是代码的征服者!谢谢你的帮助。你好,格林。