我有一个应用程序,在其中我要调用函数Date.parse,如下所示:
Date.parse('2021-02-22' + ' ' + '13:00')
但是,当我在本地和正式版(AWS)中运行该应用程序时,此函数似乎返回两个不同的结果。在本地它返回1613959200000,而在生产中它返回1613998800000。经过进一步调查,似乎在澳大利亚东部夏令时的13:00时1613959200000转换为2021-02-22,而在UTC的1613998800000在13:00转换为2021-02-22。时间。有没有一种方法可以强制Date.parse()转换为客户端/浏览器的本地时区,而不是UTC?(在这种情况下,是澳大利亚东部夏令时,但我希望它适用于所有时区)。
编辑:我尝试使用日期对象,以产生与本地时区同步的日期/时间对象,但它似乎不起作用,如下面的代码所示:
var d = new Date("Mon Feb 22 2021 00:00:00 GMT+1100 (Australian Eastern Daylight Time)");
var ds = d.toString();
var e = new Date(2021,2,22,0,0)
var es = e.toString();
console.log(ds === es) //returns false for some reason
根据ECMAScript规范,您只需要使用aT
而不是空格来分隔日期和时间部分。
const t = Date.parse('2021-02-22' + 'T' + '13:00');
console.log(t); // result will differ depending on local time zone
该格式在“日期时间字符串格式”下有完整描述。此外,在其文档中Date.parse
指出:
...缺少sss元素时,将使用“ 000”。如果没有UTC偏移量表示,则仅日期格式将被解释为UTC时间,而日期时间格式将被解释为本地时间。
因此,组合字符串2021-02-22T13:00
将被解释为2021-02-22T13:00:00.000
本地时区,因为它是日期时间格式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句