new Date()四种使用方式:
1.无参数
2.时间戳
3.dateString
4.分别提供日期与时间的每一个成员
其中dateString浏览器的存在不同的表现,在这里用了四种常见的格式进行总结
new Date('2016-10-01')
new Date('2016-10-01 16:09:08')
new Date('2016/10/01')
new Date('2016/10/01 16:09:08')
new Date('2016-10-01T16:09:08Z')
前四种是非标准的格式
第五中是ecma标准的格式,是基于iso8601简化版,标准在这里15.9.1.15节
那么我们一次看一下在各个浏览器的表现
new Date('2016-10-01') 支持 但是会被认为是0时区的utc时间 转换为+8时区的时候就加上8个小时
new Date('2016-10-01 16:09:08') 不支持直接invalid date
new Date('2016/10/01') 支持 并且被认为是+8时区的时间 不会产生时区偏移
new Date('2016/10/01 16:09:08') 支持
new Date('2016-10-01T16:09:08Z') 支持
new Date('2016-10-01') 支持 但是会被认为是0时区的utc时间 转换为+8时区的时候就加上8个小时
new Date('2016-10-01 16:09:08') 不支持直接invalid date
new Date('2016/10/01') 支持 并且被认为是+8时区的时间 不会产生时区偏移
new Date('2016/10/01 16:09:08') 支持
new Date('2016-10-01T16:09:08Z') 支持
new Date('2016-10-01') 支持 但是会被认为是0时区的utc时间 转换为+8时区的时候就加上8个小时
new Date('2016-10-01 16:09:08') 支持
new Date('2016/10/01') 支持 并且被认为是+8时区的时间 不会产生时区偏移
new Date('2016/10/01 16:09:08') 支持
new Date('2016-10-01T16:09:08Z') 支持
new Date('2016-10-01') 支持 但是会被认为是0时区的utc时间 转换为+8时区的时候就加上8个小时
new Date('2016-10-01 16:09:08') 支持
new Date('2016/10/01') 支持 并且被认为是+8时区的时间 不会产生时区偏移
new Date('2016/10/01 16:09:08') 支持
new Date('2016-10-01T16:09:08Z') 支持
2016-10-01这种不带时间的格式会产生时区偏移,加上时间的new Date('2016-10-01 16:09:08') ie和safari是直接不支持的,所有这种格式还是不要使用了
new Date('2016/10/01')斜杠的格式可能因为历史原因 是都支持的
new Date('2016-10-01T16:09:08Z') 标准的ecma格式各家浏览器都支持,毕竟2011年的标准,现在的支持性还是比较好的