【发布时间】:2019-11-13 06:13:16
【问题描述】:
我正在开发一个应用程序,前端使用 AngularJS,后端使用 Java(使用 Spring)。
我注意到前端profile-entity 的显示日期与数据库中显示的日期不同。
所以我调试了保存日期的那一刻,发现在前端(保存日期时 - $scope.selectedProfile.$save)日期具有以下值:
$scope.selectedProfile.projects[1].start -> Date: 2017-10-31T23:00:00.000Z
$scope.selectedProfile.projects[1].start.getTime() -> 1509490800000
接下来我在返回行到达后端的断点:
@RestController
@RequestMapping(value = "/profiles", produces = MediaType.APPLICATION_JSON_VALUE)
public class ProfileController {
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public Profile update(@RequestBody Profile profile) {
return this.repository.save(profile);
}
}
并且日期具有以下值:
profile.projects.get(1).start -> (Date) “Tue Oct 31 23:00:00 CET 2017”
profile.projects.get(1).start.getTime() -> 1509487200000
这里不是已经出现问题了吗? - 因为“getTime()”函数不应该在前端和后端返回相同的数字,因为它们不依赖于时区?
问题是当我将值导出到 Word 文件中并显示它写“十月”的月份时,即使前端显示的日期是 11 月 1 日。
有人知道我能做什么吗?
这是传递的 JSON:
{
"id": 64,
"projects": [
{
"id": 135,
"project": 339,
"start": null,
"end": null
},
{
"id": 132,
"project": 403,
"start": "2017-10-31T23:00:00.000Z",
"end": null
}
]
}
数据通过这段代码传递:
$http.post('/profiles/profiles', profile)
我认为映射是由 Spring 自动完成的。
【问题讨论】:
-
尝试格式化日期
-
将日期从字体端发送到后端的代码在哪里?您发送的 JSON 包含什么内容?
-
@JBNizet 感谢提示,我添加了该信息
-
所以问题出在后端。你如何解析JSON?看来您仍在使用过时、糟糕的 java.util.Date 类。别。使用 java.time.Instant。
-
@JBNizet thx 提示 - 一旦我取得更多进展,我会尝试继续更新这篇文章
标签: java angularjs date spring-mvc