Date类型介绍
要创建一个日期对象,使用new操作符和Date构造函数即可:
var now = new Date();
Date.parse()方法
其中Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。ECMA-262没有定义Date.parse()应该支持哪种日期格式,因此这个方法的行为因实现而异,而且通常是因地区而异。将地区设置为美国的浏览器通常都接受下列日期格式:
"月/日/年",如12/26/2018;
"英文月名 日,年",如May 12,2018;
"英文星期几 英文月名 日 年 时:分:秒 时区",如Tue May 25 2018 00:00:00 GMT+0800。
ISO 8601扩展格式YYYY-MM-DDTHH:mm:ss:sssZ(例如 2018-05-25T00::00:00)。只有兼容ECMAScript5的实现支持这种格式。
例如,要为2018年5月25日创建一个日期对象,可以使用下面的代码:
//Tue May 25 2018 00:00:00 GMT+0800 (中国标准时间)
var someDate = new Date(Date.parse('May 25,2018'));
如果传入Data.parse()的方法的字符串不能表示日期格式,会返回NAN。实际上,如果直接将表示日期的字符串传递给Date构造函数,也会在后台调用Date.parse()方法,例如下面的代码跟前面的是等价的。
//Tue May 25 2004 00:00:00 GMT+0800 (中国标准时间)
var someDate = new Date('May 25,2004');
这行代码将会得到与前面一行相同的日期对象。
Date.UTC()方法
Date.UTC()同样返回日期的毫秒数。但它与Date.parse()在构建值时使用的是不同的信息。Date.UTC()的参数分别表示年份、基于0的月数(一月是0,二月是1,依次类推)、月中的哪一天(1到31)、小时数(0到23)、分钟、秒、毫秒数。在这些参数中只有前两个参数是必须的(年和月)。如果没有提供月中的天数,则假设天数为1;如果省略其它参数,则统统假设为0,如下例子:
//GMT时间2000年1月1日午夜零时
var y2k = new Date(Date.UTC(2000,0));
console.log(y2k); //Sat Jan 01 2000 08:00:00 GMT+0800 (中国标准时间)
//GMT时间2018年5月5日下午5:55:55
var allFives = new Date(Date.UTC(2018,4,5,17,55,55));
console.log(allFives);//Fri May 06 2018 01:55:55 GMT+0800 (中国标准时间)
说明下:Greenwich Mean Time (GMT)格林尼治标准时间英国、爱尔兰、冰岛和葡萄牙属于该时区。这个时区与中国北京时间的时差是8个小时,也就是说比北京时间晚8个小时。
Date构造函数
Date构造函数会模仿Date.UTC(),但有一点不同的是,日期和时间都是基于本地时区而非GMT来创建。不过他们的参数跟Date.UTC()的参数一样。
例如:
//本地时间2018年1月1日午夜零时
var y2k = new Date(2018,0);
console.log(y2k); //Sat Jan 01 2018 00:00:00 GMT+0800 (中国标准时间)
//本地时间2018年5月5日下午5:55:55
var allFives = new Date(2018,4,5,17,55,55);
console.log(allFives);//Thu May 05 2018 17:55:55 GMT+0800 (中国标准时间)
给Date构造函数传递参数常使用如下几种方式:(注:参数可以为整数; 也可以为字符串; 但格式必须正确)
new Date(2018,1,1); //正确
new Date("2018/1/1"); //正确
new Date("2018-1-1"); //不兼容,在谷歌下能解析,在IE浏览器9及以上结果为[date] Invalid Date,IE8及以下结果为NAN。
说明:日期对象new Date()的参数形式如下:
1)new Date("month dd,yyyy hh:mm:ss");
2)new Date("month dd,yyyy");
3)new Date(yyyy,mth,dd,hh,mm,ss);
4)new Date(yyyy,mth,dd);
5)new Date(ms);
需要注意最后一种形式,参数表示的是需要创建的时间和 GMT时间1970年1月1日之间相差的毫秒数。各种函数的含义如下:
month:用英文 表示月份名称,从January到December
mth:用整数表示月份,从0(1月)到11(12月)
dd:表示一个 月中的第几天,从1到31
yyyy:四位数表示的年份
hh:小时数,从0(午夜)到23(晚11点)
mm: 分钟数,从0到59的整数
ss:秒数,从0到59的整数
ms:毫秒数,为大于等于0的整数
例如:
new Date("January 12,2018 22:19:35");
new Date("January 12,2018");
new Date(2018,0,12,22,19,35);
new Date(2018,0,12);
new Date(1137075575000);
上面的各种创建形式都表示2018年1月12日这一天。
Date.now()方法
ES5添加了Date.now()方法,返回表示这个方法时的日期和时间的毫秒数。这个方法简化了使用Date对象分析代码的工作,例如:
//取得开始时间
var start = Date.now();
//调用函数
dosomething();
//取得结束时间
var stop = Date.now(),
result = stop - start;
console.log(start,stop,result); //1494292306763 1494292306768 5
function dosomething(){
console.log('打印结果');
}
支持Date.now()方法的浏览器包括IE9+,FireFox3+,Safari3+,Opera10.5+和Chrome。在不支持的其它浏览器,使用+操作符把Date对象转成字符串,也可以达到相同的目的。
//取得开始时间
var start = +new Date();
//调用函数
dosomething();
//取得结束时间
var stop = +new Date(),
result = stop - start;
console.log(start,stop,result); //1494292306763 1494292306768 5
function dosomething(){
console.log('打印结果');
}
那么就出来这么一个例子,JavaScript 获取当前毫秒时间戳有以下几种方法:
console.log(Date.parse(new Date())); //结果:1494301186000//不推荐; 毫秒改成了000显示
console.log((new Date()).valueOf()); //结果:1494301186175
console.log(new Date().getTime()); //结果:1494301186175
console.log(Date.now()); //结果:1494301186175
console.log(+new Date()); //结果:1494301186175
以上的javascriptdate(日期)对象由网页知识大全为大家整理