k8w.io
JavaScript中new Date的坑
2017-11-20作者:k8w

你知道new Date('2016-01-01')new Date('2016/01/01')对应的是不同的时间吗?

实验

new Date(2016,1,1)  //是2016年2月1号 不是1月1号 Month是从0开始
new Date('2016-01-01') //UTC时间,不是当前时区,对应北京时间就是08:00:00
new Date('2016-1-1')  //当前时区时间
new Date('2016-01-01 00:00:00')  //当前时区时间
new Date(2016,0,1)  //当前时区的时间

原因

http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15
原则上 new Date只接受 2016-02-01T00:00:00Z 2016-02-01T00:00:00+08:00 这样的字符串,像2016-1-1,2016-01-01 00:00都是非标准的,事实上在IE上就没办法new出来。

标准时间格式为
yyyy-MM-ddThh:mm:ss.SSSZ (代表UTC时间)
yyyy-MM-ddThh:mm:ss.SSS+08:00 (指定时区)
(正文完)
标签:JavaScript
留言(0条)
发表新留言
您的大名:
必填
电子邮箱:
不公开,仅用于向你发送回复