Date类型
ECMAScript 中的Date类型是在早期Java中的java.util.Date 类基础上构建的。为此,Date类型使用处UTC(Coordinated Universal Time,国际协调时间)1970年1月1日午夜(零时)开始经过的毫秒数来保存日期。在使用这种数据存储格式的条件下,Date类型保存的日期能够精确到1970年1月1日之前或者之后的100 000 000年。
要创建一个日期对象,使用new操作符和Date构造函数即可,如下:
<script>
let now = new Date();
console.log(now);
//Tue Dec 24 2019 09:34:51 GMT+0800 (中国标准时间)
//调用不传参的情况下,自动获得当前的日期和时间
</script>
如果想要根据特定的日期和时间来创建日期对象,必须传入表示该日期的毫秒数。不过为了简化这一计算过程,js提供了两个方法:Date.parse()和Date.UTC()。
- Date.parse():接收一个表示日期的字符串参数
- Date.UTC():参数分别是年份、从0开始的月份(即0表示1月)、月中的哪一天、小时数、分钟、秒以及毫秒。在这些参数中,前两个是必填的。如果没有天数,默认为1,其它的默认为0。
//Date.parse():
//为2004年5月25日创建一个时间对象
var date = new Date(Date.parse('May 25, 2004'));
console.log(date);
//Tue May 25 2004 00:00:00 GMT+0800
//如果传入的参数不能表示日期,则返回NaN
//下面和上面的是一样的,为简写方式
var date = new Date('May 25, 2004');
console.log(date);
//Tue May 25 2004 00:00:00 GMT+0800
//Date.UTC():
//2000年1月1日午夜0时
var date = new Date(Date.UTC(2000,0));
console.log(date);
//Sat Jan 01 2000 00:00:00 GMT+0800
//2005年5月5日下午5:55:55
var date = new Date(2005,4,5,17,55,55);
console.log(date);
//Thu May 05 2005 17:55:55 GMT+0800 (中国标准时间)
Date.now()
var start = Date.now();
console.log(start);
//1577153091488 现在时间的毫秒数
继承的方法
Date类型也重写了toLocaleString()、toString()和valueOf()方法:只不过这些方法返回值与其他类型是不同的,不同浏览器表现也会不同,下面看代码,我用的是谷歌,小伙伴们可以尝试别的浏览器:
var now = new Date();
console.log(now);//Tue Dec 24 2019 10:10:48 GMT+0800 (中国标准时间)
console.log(now.toLocaleString());//2019/12/24 上午10:10:48
console.log(now.toString());//Tue Dec 24 2019 10:10:48 GMT+0800 (中国标准时间)
console.log(now.valueOf());//1577153448487
日期也可以作比较,如:
var date1 = new Date(2007,0,1);
var date2 = new Date(2007,1,1);
console.log(date1>date2);//false
console.log(date2>date1);//true
日期的格式化方法
var date = new Date();
console.log(date.toDateString());//Tue Dec 24 2019
console.log(date.toTimeString());//10:17:38 GMT+0800 (中国标准时间)
console.log(date.toLocaleDateString());//2019/12/24
console.log(date.toLocaleTimeString());//上午10:17:38
console.log(date.toUTCString());//Tue, 24 Dec 2019 02:36:04 GMT
console.log(date.toLocaleString());//2019/12/24 上午10:36:04
console.log(date.toString());//Tue Dec 24 2019 10:36:04 GMT+0800 (中国标准时间)
常用的日期/时间组件方法
var date = new Date();
console.log('年:',date.getFullYear());//年: 2019
console.log('月:',date.getMonth());//月: 11 月份默认从0开始的
console.log('日:',date.getDay());//日: 2
console.log('时:',date.getHours());//时: 14
console.log('分:',date.getMinutes());//分: 28
console.log('秒:',date.getSeconds());//秒: 22
console.log('毫秒:',date.getMilliseconds());//毫秒: 501
console.log('毫秒数:',date.getTime());//获取毫秒数
console.log('毫秒数:',date.setTime(毫秒值));//以毫秒设置时间