Javascript 来自字符串的Firefox new Date()在本地时区中构造时间
我正在尝试从字符串创建日期对象。 我以ISO格式获取日期,但毫秒部分除外,如“2012-01-30T16:23:12” 当我在IE、Chrome和Firefox中运行以下代码时,结果会有所不同 () IE和Chrome将字符串视为UTC,但firefox将其视为本地时区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
除了到处检查用户代理之外,还有什么通用的解决方法吗?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')