gpt4 book ai didi

JavaScript 日期到 Java LocalDateTime

转载 作者:行者123 更新时间:2023-12-01 16:25:22 25 4
gpt4 key购买 nike

在服务器上,日期字段是LocalDateTime类型。当我将它作为 Json 传递到前端时,它会转换为以下格式:"dd-MM-yyyy hh:mm:ss"

这是该字段在 DTO 中的样子:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss")
private LocalDateTime term;

这是从服务器接收的日期在前端的外观:

02-06-2020 04:15:05

在前端,我尝试获取当前日期并根据 DTO 格式进行转换:

term: moment().format("DD-MM-yyyy hh:mm:ss")

如果您在控制台中输出此日期,它将如下所示:

{"term":"02-06-2020 12:00:00"}

但是当我向服务器发送请求时,出现错误:SyntaxError: Unexpected end of JSON input。我意识到这是由于 DTO 的日期格式造成的,因为如果 DTO 字段具有字符串 @JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "dd-MM-yyyy hh:mm:ss"),那么就不会出现错误,请求会成功通过。但为什么它不起作用,因为我以正确的形式输入了日期?看起来和服务器的响应一模一样,但还是不行?或者是否有更好的方法将日期时间从前端发送到服务器?

这是我从前端发送的请求:

 const сard = {
name: "name",
description: "description",
term: moment().format("DD-MM-yyyy hh:mm:ss")
};

fetch({
url: `${API_BASE_URL}/cards`,
method: 'POST',
body: JSON.stringify(card)
});

最佳答案

问题出在日期格式上。为了使一切正常工作,必须在服务器上为 LocalDateTime 字段安装以下 JsonFormat:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss")

我不太明白为什么,但它只能这样工作。如果您编写 YYYY 而不是 yyyy 或编写 hh 而不是 HH,来自前端的查询将返回错误。这是一个有点奇怪的解决方案,但它确实有效。

在前端,我使用 moment.js 将日期转换为以下格式:

moment().format("YYYY-MM-DDTHH:mm:ss")

请求成功执行后

关于JavaScript 日期到 Java LocalDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62158385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com