将字符串转换为日期

时间:2012-05-22 10:44:22

标签: java spring hibernate validation type-conversion

我正在开发一个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

1 个答案:

答案 0 :(得分:4)

通过调用ParseExceptionString

进行解析来处理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;