我正在为 CRUD 函数的一个数据库表编写一些 JavaScript,用于标识数据项的 ID 字段之一是日期。使用 AJAX 提取此数据时,它采用完整的 JavaScript 数据格式:
Thu Apr 25 2019 00:00:00 GMT+0100 (British Summer Time)
。
这会导致问题,因为当它被发送时,Kendo UI 将其更改为 UTC,在这种情况下,日期更改为 4 月 24 日,这意味着我们的后端代码找不到记录。
我尝试解决这个问题的方法是在使用
.toLocalDateString
时更改此字段。这解决了我的问题,因为它似乎只是切断了有关时区的信息,并且只给了我后端接受的DD/MM/YYYY
。
我的问题是:如果该程序在美国东部等地区使用,这是否会产生预期的效果(忽略时区,只给我日期)。
由于我在英国,并且我们的时区目前是英国夏令时间,这是拉入原始数据所在的时区,所以这只是因为我在 BST 才有效吗?如果我在东部标准时间,晚了 5 或 6 小时,是否会
.toLocaleDateString
导致这一天倒退 1?
我查看了文档,它只说“使用本地约定”,但我不清楚其含义。
编辑: 我从 AJAX 请求中得到了
Mon May 13 2019 00:00:00 GMT+0100 (British Summer Time)
回复。当我发送回来时,我对数据进行字符串化,并将其字符串化为:"2019-05-12T23:00:00.000Z"
,采用 UTC 格式,从而导致了问题。
Date 实例的 toLocaleDateString() 方法返回一个字符串,其中包含用户代理时区中指定日期的日期部分的语言敏感表示形式。在支持 Intl.DateTimeFormat API 的实现中,此方法只需调用 Intl.DateTimeFormat。来自MDN