在 Angular 中创建新日期时删除时区信息



尝试这行代码时出现以下问题

console.log(JSON.stringify(new Date('2016-06-15 10:59:53.5055')));

我得到"2016-06-15T08:59:53.505Z",但是我希望"2016-06-15T10:59:53.505Z"

如何从new Date中删除时区?

问题是,我正在通过 http-post 将此日期发送到 API。在 http.post 命令中,Date 已字符串化(现在不正确)

是的,您可能需要计算时区偏移量,然后添加然后添加到日期对象时间示例代码,如下所示。

var d = new Date('2016-06-15 10:59:53.5055');
var timeZoneDifference = (d.getTimezoneOffset() / 60) * -1; //convert to positive value.
d.setTime(d.getTime() + (timeZoneDifference * 60) * 60 * 1000);
d.toISOString()

创建对象时无法删除时区信息Date- 这是 API 的缺陷。

通过各种DateAPI创建的日期根据提供的时区(如果给定方法支持)进行分析,或者如果缺少,则采用本地计算机的时区;然后在内部表示为相对于UTC时区的日期。

每当你串化一个日期时,你隐式调用date.toJSON(),而又调用date.toISOString(),它串到UTC相对时间(因此Z作为代表Zulu的结尾,即UTC)。

据我所知,没有方法可以序列化为类似 ISO 的字符串,而是使用本地时区。 您可以使用低级 Date 属性来编写自己的方法,如果您确实需要,该方法会序列化回本地时区,或者您可以使用像date-fns这样的库。您可以使用moment库,但是虽然非常强大,但它很大,所以要小心。

最新更新