我的用户界面将一个日期作为String(01/06/2016 2:30 am)返回给控制器,我想通过将其从字符串更改为日期和格式来插入 oracle 10数据库到(dd-MMM-yy hh:mm:ss a)其中字段是日期类型。以下是我尝试的内容,但获得Illegal Argument
例外。
在控制器I中格式化为日期并通过DTO将其传递给服务层
创建时间:01/06/2016 09:00
SimpleDateFormat fromUser = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
SimpleDateFormat myFormat = new SimpleDateFormat("dd-MMM-yy hh:mm:ss a");
String reformattedStr = myFormat.format(fromUser.parse(created));
System.out.println("reformattedStr is : " + reformattedStr);
** reformattedStr 06-Jan-16 09:00:00 PM
Date formateDate=myFormat.parse(reformattedStr);
通过准备好的声明服务我试图插入日期和其他字段。
stmt.setTimestamp(8,new java.sql.Timestamp(news.getCreated()。getTime()));
有人可以建议吗?
感谢您的帮助,我已经更新了代码,它可能对某些人有帮助。
答案 0 :(得分:1)
如果列数据类型为timestamp
,则无需对日期进行显式转换。 statement.setTimestamp()
方法会处理它。
有两种方法可以从TimeStamp
对象创建java.util.Date
实例。
new TimeStamp(date.getTime())
或
TimeStamp.value(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date))
news.getCreated().toString()
方法返回的值可能无法返回格式正确的日期 - 如果它返回格式化日期。
有关详细信息,请参阅TimeStamp
课程的 javadoc 。
由于