当转换为时间戳时,日期转换返回错误的日期

时间:2020-02-13 09:45:53

标签: java angular typescript

dob : any = "15-05-2001";

发送到服务器时,它返回错误Could not read document: Can not construct instance of java.util.Date from String value '15-05-2001': not a valid representation (error: Failed to parse Date value '15-05-2001': Can not parse date \"15-05-2001\": not compatible with any of standard forms (\"yyyy-MM-dd'T'HH:mm:ss.SSSZ\", \"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\", \"EEE, dd MMM yyyy HH:mm:ss zzz\", \"yyyy-MM-dd\"))\n

在Angular代码中尝试转换日期

dob = new Date(moment(dob, "DD-mm-yyyy").format("MM-DD-YYYY")).getTime();

返回1581710400000

返回错误的日期,但是服务器接受了输入。

如何格式化此日期,以便我可以发送所需的日期,并且服务器接受该日期。

2 个答案:

答案 0 :(得分:2)

发生了同样的问题,我的解决方案是将datetime转换为toLocalString

var dateTime = new Date();
var sendObj = dateTime.now().toLocalString();

更新:

dob = "15-05-2001";
dob =  new Date(moment(this.dob, "dd-MM-YYYY").format()).getTime();

答案 1 :(得分:0)

您可以在后端创建一个Advice,类似于:

@ControllerAdvice
public class DateAdvice{

@InitBinder
public void initBinder(WebDataBinder binder){
binder.regisyerCustomEditor(Date.class, new PropertEditorSupport(){

 public void setAsTest(String text){
  //convert to date from this text.
  setValue(convertToDate(text));
 }
}
}
}

您可以编写所有可能的组合来解析日期。

另一种方法是将日期更改为YYYY-MM-DD格式。