【发布时间】:2021-06-07 03:46:39
【问题描述】:
我想将日期从前端传递到后端,然后保存到数据库。 对于前端 - 我正在使用 javascript 和 jQuery 对于后端springboot,java8。 当我在 JavaScript 中创建今年的日期时
let setDate = new Date(2022, 11, 31);
console.log(setDate);
我得到这样的输出:Sat Dec 31 2022 00:00:00 GMT+0530 (India Standard Time)
在javascript中:
reqObj.setDate = setDate;
Java 中的对象是String setDate
但是当涉及到后端 Spring Boot 控制器时,它变成:
2022-01-30T18:30:00.000Z(天减少一/时区从 IST 到 GMT 的变化)(数据类型是 java 中的字符串)
获得字符串后,我根据需要进行了一些格式更改:
private String getDate(String date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MMM-yyyy");
String resultsDate = "";
try {
resultsDate = sdf1.format(sdf.parse(date));
} catch (Exception e) {
logger.error(this.getClass().getName(), ".getDate() Exception : {}" + e);
}
return resultsDate;
}
时区更改导致日期更改,但日期应相同,即像 (2022-01-31T00:00:00.000Z)
如何从前端解决?
【问题讨论】:
-
天减一。不,它从 IST(印度标准时间)转换为 UTC,减少了 5 个半小时
-
您需要检查您如何将日期发送到服务器以及如何保存?
-
您还没有告诉我们您是如何将 JavaScript 日期发送到服务器的。您不能发送
Date对象,因此您将发送其他内容。它可能是Date的毫秒数(从本质上讲是 UTC),也可能是某种字符串,有或没有时区信息。在不知道您发送的内容的情况下,我们无法帮助您。 “我不关心时区” - 这可能是一个错误。相反,请注意时区,如果您想将事物视为独立于时区,请始终使用 UTC。 -
但
00:00:00 GMT+0530与00:00:00.000Z的时间不同 -
我建议在 Java 中不要使用
SimpleDateFormat和Date。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的Instant。
标签: javascript java date timezone