Date类型使用自UTC(Coordinated Universal Time,国际协调时间;旧时又叫GMT即格林尼治标准时间)即1970年1月1日午夜(零时)开始经过的毫秒数(ms)来保存日期。
在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间。为了简化日期计算过程,ECMAScript提供了2个方法:Date.parse()和Date.UTC()。
实际上可以将表示日期的参数直接传递给Date构造函数,后台会自动调用Date.parse()或Date.UTC()方法;
Date.parse()方法支持日期的字符串参数,而Date.UTC()则不支持字符串参数:
例如:
new Date("2013,4,2") 和 new Date(2013,4,2)是2种不同的日期表示方法,所表示的也不是同一个日期!
解析:
new Date("2013,4,2")会后台调用Date.parse(),返回 Tue Apr 02 2013 00:00:00 GMT+0800 (中国标准时间);
new Date(2013,4,2)会后台调用Date.UTC(),返回 Thu May 02 2013 00:00:00 GMT+0800 (中国标准时间),注意返回的月份是May 02即5月2号,因为Date.UTC()的参数月份是基于0的(1月是0,2月是1,以此类推)
(究竟后台自动调用哪个函数,可自行在Date()参数中手动添加parse或UTC进去手动验证下,即可验证上面说的没错!)
除此之外,new Date("2013,4,2")后台调用Date.parse(),而该方法参数格式ECMA并没定义该接受哪种日期格式,但实验证明:Date("2013,4,2")这种日期格式在Ie下不能识别,无法返回正确的日期!
推荐的几种兼容各浏览器标准的日期参数写法如下:
- "月/日/年",如 4/2/2013 (2013年4月2号) ("年/月/日"的参数格式,也兼容各浏览器,但这种格式不是标准的推荐写法!)
- "英文名月 日,年",如April 2,2013 (日同年份间逗号可省略,兼容各浏览器,如果月份不是英文名月份而是数字,ie下不能识别!)
- "英文星期几 英文名月 日 年 时:分:秒" (日期的完整表示格式)
所以 表示2013年4月2号的正确写法(兼容各浏览器):
new Date("4/2/2013") 或 new Date("2013/4/2")
new Date("April 2,2013")或 new Date("April 2 2013")
0条评论( 网友:0 条,站长:0 条 ) 网友评论{有您的评论更精彩....}