我正在开发一个Spring / Hibernate Web应用程序。我有一个DataTranseferObject,它存储了来自jsp页面的输入以供不同的服务使用,并最终保存到数据库中。

jsp页面中的字段之一是deliveryDate。我想将其作为日期类型存储在数据库中:

从delivery.java

@Column(name = "DELIVERY_DATE")
private Date deliveryDate;

public void setDeliveryDate(Date deliveryDate){
    this.deliveryDate= deliveryDate;
}
public Date getDeliveryDate(){
    return deliveryDate;
}


我正在尝试验证jsp页面中的字段,以便仅允许使用"yyyy-MM-dd"格式。为此,我在DataTransferObject中将deliveryDate作为String类型,并使用@Pattern批注对其进行验证,如下所示:

@Pattern(regexp="((19|20)\\d\\d)-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])", message="please enter date in fromat yyyy-MM-dd")
@NotNull(message="delivery date is a required field")
private String deliveryDate;


由于我想将其作为日期类型存储在数据库中,因此需要将String转换为Date类型。我正在尝试使用服务来做到这一点:

@Transactional
public Date stringToDateConversion(String stringDate){

    DateFormat formatter;
    Date date;
    formatter = new SimpleDateFormat("yyyy-MM-dd");
    date = (Date) formatter.parse(stringDate);
    return date;
}


但是它不起作用,因为formatter.parse(stringDate)给出了"Unhandled exception type ParseException"

我需要该服务返回Date类型,以便可以在控制器中使用它:

    Date deliveryDate= deliveryService.stringToDateConversion(deliveryDto.getDeliveryDate());
    delivery.setDeliveryDate(deliveryDate);


如何正确地将String转换为Date类型并返回Date类型?

谢谢您的帮助!
/ D

最佳答案

只需处理ParseException并调用将String解析为Date

DateFormat formatter =  null;
java.util.Date date = null;
formatter = new SimpleDateFormat("yyyy-MM-dd");
try{
  date = formatter.parse(stringDate);
  //if you want you can convert it to `java.sql.Date`
}catch(ParseException ex){//do whatever you would like to}

return date;

10-07 19:42
查看更多