Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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

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 ECMAScript 5.1规范不正确?日期构造函数日期/时间格式解析为UTC_Javascript_Date_Datetime_Ecmascript 5_Iso8601 - Fatal编程技术网

Javascript ECMAScript 5.1规范不正确?日期构造函数日期/时间格式解析为UTC

Javascript ECMAScript 5.1规范不正确?日期构造函数日期/时间格式解析为UTC,javascript,date,datetime,ecmascript-5,iso8601,Javascript,Date,Datetime,Ecmascript 5,Iso8601,根据维基百科的文章(我知道,坏消息来源) 如果未提供带有时间表示的UTC关系信息,则假定时间为本地时间 比如说。。鉴于: var a=日期解析(“2012-03-21”) var b=日期解析(“2012-03-21T00:00”) var c=日期解析(“2012-03-21T00:00Z”) 我希望“a”和“b”是当地时间(浏览器的时区),而“c”是UTC。但是,a、b和c都是等效的(13322800000)。所有值都解析为UTC ECMAScript规范也明确说明了这一点: 15.9.

根据维基百科的文章(我知道,坏消息来源)

如果未提供带有时间表示的UTC关系信息,则假定时间为本地时间

比如说。。鉴于:

  • var a=日期解析(“2012-03-21”)
  • var b=日期解析(“2012-03-21T00:00”)
  • var c=日期解析(“2012-03-21T00:00Z”)
我希望“a”和“b”是当地时间(浏览器的时区),而“c”是UTC。但是,a、b和c都是等效的(13322800000)。所有值都解析为UTC

ECMAScript规范也明确说明了这一点:

15.9.1.15日期时间字符串格式

缺少时区偏移的值为“Z”

为什么会有这种差异?维基百科是不正确的还是ECMAScript规范?如何将ISO-8601字符串解析为浏览器中的本地时间(而不知道浏览器的时区)

如何将ISO-8601字符串解析为浏览器中的本地时间(而不知道浏览器的时区)

使用
toLocaleString
方法执行此操作:

var foo = new Date("2012-03-21").toLocaleString()
var bar = new Date("2012-03-21T00:00").toLocaleString()
var baz = new Date("2012-03-21T00:00Z").toLocaleString()
参考资料


是的,ES5.1不正确


ECMAScript 6草案现在说“如果没有时区偏移,日期时间将被解释为本地时间。”

那么,也许浏览器的时区实际上是UTC?奇怪的评论。不,这是EST。这条评论有什么奇怪的,如果你在英国,你的localtime和utc会产生相同的结果。。。