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

时间:2019-05-07 11:51:50

标签: angular typescript date

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

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发送此Date到API。在http.post命令中,日期已被字符串化(现在不正确)

2 个答案:

答案 0 :(得分:1)

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

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

每当您对日期进行字符串化时,您都会隐式调用date.toJSON(),后者又会调用date.toISOString(),字符串化为相对于UTC的相对时间(因此Z为代表{{1 }},例如UTC。

据我所知,没有方法可以使用本地时区序列化为类似于ISO的字符串。 您可以使用low-level Date properties编写自己的方法,如果确实需要,该方法可以序列化回本地时区,也可以使用类似date-fns的库。您可以使用Zulu库,但是虽然功能很强大,但它却很大,因此请务必小心。

答案 1 :(得分:1)

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

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()