【问题标题】:Date Conversion returns wrong date when converted into timestamps日期转换在转换为时间戳时返回错误的日期
【发布时间】:2020-02-13 18:25:37
【问题描述】:
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

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

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

【问题讨论】:

  • 1581710400000 现在差不多了,所以我假设 moment() 出于某种原因给了你错误的对象(now 而不是 dob)?或者dob 在某处被覆盖?其他任何事情对我来说都没有多大意义

标签: java angular typescript


【解决方案1】:

发生了同样的问题,我的解决方案是将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();

【讨论】:

  • 尝试了此解决方案 toLocaleString()......从服务器返回相同的错误“无法读取文档:无法从字符串值 '15-05-2001 构造 java.util.Date 的实例':不是有效的表示(错误:无法解析日期值'15-05-2001':无法解析日期\“15-05-2001\”:不兼容任何标准格式(\“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"
  • 试试这个。 dob = new Date(moment(this.dob, "dd-MM-YYYY").format()).getTime();
【解决方案2】:

您可以在后端创建一个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 格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2023-03-26
    • 2014-08-23
    相关资源
    最近更新 更多