尝试将日期对象从 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/