尝试将日期对象从AngularJS传递到Java Spring后端时遇到以下错误:
无法从类型[java.lang.String]转换为类型 [@ javax.persistence.Column java.sql.Timestamp]的值 '2018-06-12T22:00:00.000Z';嵌套异常为 java.lang.IllegalArgumentException:时间戳格式必须为 yyyy-mm-dd hh:mm:ss [.fffffffff]
到目前为止,我尝试将日期对象格式化为预期格式的字符串:
$filter('date')(date, "yyyy-MM-dd hh:mm:ss");
这会导致错误提示:
错误:[ngModel:datefmt]预期
2018-06-13 12:00:00
是一个日期
好像我需要传递一个日期对象,但是我找不到一种方法来影响AngularJS尝试转换为的日期格式。
答案 0 :(得分:3)
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。 (我也不使用。)
答案 1 :(得分:-1)
您可以使用以下任何格式将日期字符串转换为日期对象:
Date parseDateString(String dateString){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date date = dateFormat.parse(dateString);
}
您可以在documentation
中了解更多信息