不得不说Javascript的Date类的功能实在比较弱,没有format功能,导致创建和打印的时候都要多费一些代码。对于创建Date对象,有四种方法可以用:

new Date();
new Date(value);
new Date(dateString);
new Date(year, month, day, hour, minute, second, millisecond);

其中1、2、4的参数比较确定,不用多说。而方法3的dateString是什么格式?这是需要注意的地方。该参数的解释是这样的:

表示日期的字符串值。该字符串应该能被 Date.parse() 方法识别(符合 IETF-compliant RFC 2822 timestampsversion of ISO8601)。

写这种字符串是什么体验?

new Date("Apr 14, 2015");
new Date("Tue, 14 Apr 2015 21:06:25 GMT+0800");

这种不太符合中国人习惯的风格写起来真是别扭啊。需要摸索一个简洁的写法,比如说”2015-04-14″,这种格式行不行呢?在几款浏览器下做了实验,并不是完全兼容的。

Chrome IE9,10 IE6-8
 new Date(‘2015-04-14′)  Tue Apr 14 2015 08:00:00 GMT+0800 (CST)  Tue Apr 14 08:00:00 UTC+0800 2015  NaN
new Date(‘2015-4-14′)  Tue Apr 14 2015 00:00:00 GMT+0800 (CST)   Invalid Date  NaN
new Date(‘2015-04-14 21:12:25′)  Tue Apr 14 2015 21:12:25 GMT+0800 (CST)  Invalid Date  NaN
 new Date(‘2015-4-14 21:12:25′)  Tue Apr 14 2015 21:12:25 GMT+0800 (CST)  Invalid Date  NaN
 new Date(‘2015/04/14′) Tue Apr 14 2015 00:00:00 GMT+0800 (CST) Tue Apr 14 00:00:00 UTC+0800 2015  Tue Apr 14 00:00:00 UTC+0800 2015
new Date(‘2015/4/14′) Tue Apr 14 2015 00:00:00 GMT+0800 (CST)  Tue Apr 14 00:00:00 UTC+0800 2015 Tue Apr 14 00:00:00 UTC+0800 2015
 new Date(’15/04/14′)  Invalid Date  Thu Mar 4 00:00:00 UTC+0800 1915  Thu Mar 4 00:00:00 UTC+0800 1915
 new Date(‘2015/04/14 21:06:25′)  Tue Apr 14 2015 21:06:25 GMT+0800 (CST)  Tue Apr 14 21:06:25 UTC+0800 2015 Tue Apr 14 21:06:25 UTC+0800 2015
new Date(‘2015/4/14 21:6:25′) Tue Apr 14 21:06:25 UTC+0800 2015  Tue Apr 14 21:06:25 UTC+0800 2015 Tue Apr 14 21:06:25 UTC+0800 2015

从以上浏览器的比较中可以看出形如”yyyy-MM-dd”在IE中的兼容性不佳,亦有时区的问题。而“yyyy/MM/dd”以及“yyyy/MM/dd HH:mm:ss”在各浏览器下的兼容性比较好,推荐使用这个。