尝试此行代码时出现以下问题
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命令中,日期已被字符串化(现在不正确)
答案 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()