客户端和后端之间的TypeScript日期时区冲突

时间:2018-09-20 18:46:08

标签: typescript datetime

在我们的角度应用程序中,我们选择一个带有primeNG日历的Date对象,例如2018年9月20日。

该日期的console.log()返回正确的Thu Sep 20 2018 00:00:00 GMT+0200(GMT + 2是我的本地时区)。

此数据将发布到我们的node.js后端,该后端将日期存储到oracle数据库中。但是后端接收到值19.09.2018 22:00,因此好像它设置为GMT时区。

如何确保在后端方面时区被忽略并且20.09.2018 00:00被存储?

2 个答案:

答案 0 :(得分:0)

您可以使用[toDateString]删除您所在时间的时区信息

date.toDateString()

只要您从服务器收到数据,就可以将其转换为时区

new Date("string of date send by server")

答案 1 :(得分:0)

昨天致电toISOString()后,我遇到了同样的问题。正如您所注意到的,问题是解析器考虑了时区偏移。我尝试使用.toDateString()解决问题,但仍然遇到相同的问题。最后,我去了蛮力并做到了:

const dateNum = Date.parse(selectedDate.toString().substring(0, 28));
const date = new Date(dateNum);

前28个字符是所有字符,但不包括加号。它返回的字符串将转储时区偏移量,因此将其视为在GMT时区中创建。这可能不是解决问题的最有效方法,但确实可以。