java - 无法从字符串转换为时间戳;格式错误

标签 java angularjs spring date querydsl

尝试将日期对象从 AngularJS 传递到 java spring 后端时,出现以下错误:

Failed to convert from type [java.lang.String] to type [@javax.persistence.Column java.sql.Timestamp] for value '2018-06-12T22:00:00.000Z'; nested exception is java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]

到目前为止,我尝试将日期对象格式化为预期格式的字符串:

$filter('date')(date, "yyyy-MM-dd hh:mm:ss");

这会导致错误提示:

Error: [ngModel:datefmt] Expected 2018-06-13 12:00:00 to be a date

似乎我需要传递一个日期对象,但我找不到一种方法来影响 AngularJS 尝试转换的日期格式。

最佳答案

java.time.Instant

您的后端服务已过时,使用旧类java.sql.Timestamp。该类几年前被 java.time.Instant 取代。

如果您将后端更改为使用 Instant,则传递诸如 2018-06-12T22:00:00.000Z 之类的字符串不会有任何问题。该字符串使用 ISO 8601 中定义的标准格式。 。该格式是将日期时间值交换为文本的理想方式。

java.time 类默认使用 ISO 8601 格式。因此无需指定格式模式。

我知道 Hibernate 已更新以支持 java.time 类。我不知道JPA。 (我也不用。)

关于java - 无法从字符串转换为时间戳;格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51039520/

相关文章:

javascript - 如何在 angularjs 中将经度和纬度传递给谷歌地图指令

angularjs - 仅在按键输入时更新 AngularJS ng-model?

java - Java 中的赋值运算符

java - 在实体生命周期的某个时刻改变实体的类型

javascript - HTML Canvas 与 javascript 之间的差距

java - 如何从 Spring HandlerInterceptor 查找在 Handler 上调用的方法?

java - 使用注解在抽象类的方法中通过 id 注入(inject)

从 jar 运行时,Spring Boot 给出 "TemplateInputException: Error resolving template"

java - 像 Chrome 一样在 webview 上显示 xml

java - 如何正确使用 Spring MVC <form :select> tag to show the value of a specific object field into a collection?