Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自字符串的Firefox new Date()在本地时区中构造时间_Javascript_Date_Timezone - Fatal编程技术网

Javascript 来自字符串的Firefox new Date()在本地时区中构造时间

Javascript 来自字符串的Firefox new Date()在本地时区中构造时间,javascript,date,timezone,Javascript,Date,Timezone,我正在尝试从字符串创建日期对象。 我以ISO格式获取日期,但毫秒部分除外,如“2012-01-30T16:23:12” 当我在IE、Chrome和Firefox中运行以下代码时,结果会有所不同 () IE和Chrome将字符串视为UTC,但firefox将其视为本地时区 除了到处检查用户代理之外,还有什么通用的解决方法吗?Hm,可能的解决方法是解析字符串并使用方法 setUTCDate() setUTCFullYear() setUTCHours() 可能有更好的解决方案您可以尝试为U

我正在尝试从字符串创建日期对象。 我以ISO格式获取日期,但毫秒部分除外,如“2012-01-30T16:23:12”

当我在IE、Chrome和Firefox中运行以下代码时,结果会有所不同 ()

IE和Chrome将字符串视为UTC,但firefox将其视为本地时区


除了到处检查用户代理之外,还有什么通用的解决方法吗?

Hm,可能的解决方法是解析字符串并使用方法

setUTCDate()    
setUTCFullYear()
setUTCHours()

可能有更好的解决方案

您可以尝试为UTC添加零时区偏移量
+00:00

currentDate = "2012-01-30T16:23:12+00:00";

这有用吗?(很抱歉,如果不实际更改时区,我无法对其进行测试。)

如果输入为当前格式,则无法保证正确解析。仅当解析特定格式的字符串时才需要Date.parse()例程。解析其他格式取决于实现。如果您敢于依赖满足需求的实现,请添加符合特定格式的数据:

new Date(currentDate + '.000Z')
或者,使用能够以当前格式解析数据的库,例如jQuery或Globalize.js


类似的考虑也适用于写作日期。如果显式地使用
Date.toString()
,或在
alert(Date)
中使用,则无法保证输出格式。即使在一台计算机中,不同的浏览器也会使用不同的本地化格式。

可能与+1重复,这不是解决方法,而是正确的方法,请参阅:谢谢。它与“+00:00”一起工作。这样,所有三种浏览器产生相同的时代价值。对不起,是的,它需要冒号
new Date(currentDate + '.000Z')