1. Date对象介绍
Date对象是JS中非常重要的一个内置对象。它可以通过new Date()来创建一个当前时间的Date对象,也可以通过传入年月日等参数来创建指定时间的Date对象。
下面是创建Date对象的不同方法:
// 创建一个当前时间的Date对象
var now = new Date();
// 创建一个指定时间的Date对象
var specificDate = new Date('2021-01-01');
var specificDateTime = new Date('2021-01-01T08:00:00');
1.1 Date对象的属性
Date对象有很多属性,以下是一些常用的:
getFullYear():获取日期的年份
getMonth():获取日期的月份,0表示1月,11表示12月
getDate():获取日期的天数,从1开始
getDay():获取日期所在的星期几,0表示星期日,6表示星期六
getHours():获取日期的小时数
getMinutes():获取日期的分钟数
getSeconds():获取日期的秒数
getMilliseconds():获取日期的毫秒数
getTime():获取日期的时间戳,即自1970年1月1日以来的毫秒数
下面是使用Date对象的属性:
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth();
var date = now.getDate();
var day = now.getDay();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds();
var milliseconds = now.getMilliseconds();
var timestamp = now.getTime();
console.log('当前时间:', year, '年', month + 1, '月', date, '日', hours, '时', minutes, '分', seconds, '秒', milliseconds, '毫秒');
console.log('当前时间戳:', timestamp);
以上代码输出结果如下:
当前时间: 2021 年 10 月 1 日 10 时 0 分 0 秒 0 毫秒
当前时间戳: 1633071600000
1.2 Date对象的方法
Date对象也有很多方法,以下是一些常用的:
toString():返回日期的字符串表示
toDateString():返回日期的字符串表示,不包含时间信息
toTimeString():返回时间的字符串表示,不包含日期信息
toLocaleString():返回日期的字符串表示,使用本地时间格式
toLocaleDateString():返回日期的字符串表示,使用本地时间格式,不包含时间信息
toLocaleTimeString():返回时间的字符串表示,使用本地时间格式,不包含日期信息
valueOf():返回日期对象的原始值,即时间戳
getTimezoneOffset():返回当前时区和UTC时间之间的时差,单位为分钟
setFullYear():设置日期的年份
setMonth():设置日期的月份,0表示1月,11表示12月
setDate():设置日期的天数,从1开始
setHours():设置日期的小时数
setMinutes():设置日期的分钟数
setSeconds():设置日期的秒数
setMilliseconds():设置日期的毫秒数
setTime():设置日期的时间戳
下面是使用Date对象的方法:
var now = new Date();
console.log('toString:', now.toString());
console.log('toDateString:', now.toDateString());
console.log('toTimeString:', now.toTimeString());
console.log('toLocaleString:', now.toLocaleString());
console.log('toLocaleDateString:', now.toLocaleDateString());
console.log('toLocaleTimeString:', now.toLocaleTimeString());
console.log('valueOf:', now.valueOf());
console.log('getTimezoneOffset:', now.getTimezoneOffset());
now.setFullYear(2020);
now.setMonth(11);
now.setDate(31);
now.setHours(23);
now.setMinutes(59);
now.setSeconds(59);
now.setMilliseconds(999);
console.log('\n设置后的时间:', now.toString());
console.log('设置后的时间戳:', now.valueOf());
以上代码输出结果如下:
toString: Fri Oct 01 2021 10:00:00 GMT+0800 (中国标准时间)
toDateString: Fri Oct 01 2021
toTimeString: 10:00:00 GMT+0800 (中国标准时间)
toLocaleString: 2021年10月1日 上午10:00:00
toLocaleDateString: 2021年10月1日
toLocaleTimeString: 上午10:00:00
valueOf: 1633071600000
getTimezoneOffset: -480
设置后的时间: Fri Dec 31 2021 23:59:59 GMT+0800 (中国标准时间)
设置后的时间戳: 1640966399999
2. Date对象的应用
2.1 获取昨天和明天的日期
我们经常需要获取昨天和明天的日期,在JS中可以使用Date对象的方法来实现:
var now = new Date();
var yesterday = new Date(now.getTime() - 24 * 60 * 60 * 1000);
var tomorrow = new Date(now.getTime() + 24 * 60 * 60 * 1000);
console.log('今天:', now.toLocaleDateString());
console.log('昨天:', yesterday.toLocaleDateString());
console.log('明天:', tomorrow.toLocaleDateString());
以上代码输出结果如下:
今天: 2021年10月1日
昨天: 2021年9月30日
明天: 2021年10月2日
2.2 计算两个日期之间的天数
计算两个日期之间的天数也是常见的需求,可以使用Date对象的方法来实现:
function getDaysBetween(date1, date2) {
var time1 = date1.getTime();
var time2 = date2.getTime();
var days = Math.ceil((time2 - time1) / (24 * 60 * 60 * 1000));
return days;
}
var date1 = new Date('2021-01-01');
var date2 = new Date('2021-10-01');
var days = getDaysBetween(date1, date2);
console.log('2021-01-01到2021-10-01之间相差', days, '天');
以上代码输出结果如下:
2021-01-01到2021-10-01之间相差 274 天
2.3 格式化日期
将日期格式化成指定的字符串也是常见的需求,可以使用Date对象的方法来实现:
function formatDate(date, format) {
var year = date.getFullYear();
var month = date.getMonth() + 1;
var date = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
format = format.replace('yyyy', year);
format = format.replace('MM', month < 10 ? '0' + month : month);
format = format.replace('dd', date < 10 ? '0' + date : date);
format = format.replace('HH', hours < 10 ? '0' + hours : hours);
format = format.replace('mm', minutes < 10 ? '0' + minutes : minutes);
format = format.replace('ss', seconds < 10 ? '0' + seconds : seconds);
return format;
}
var now = new Date();
console.log(formatDate(now, 'yyyy年MM月dd日 HH:mm:ss'));
以上代码输出结果如下:
2021年10月01日 10:00:00
3. 总结
Date对象是JS中非常重要的内置对象,它可以用来表示时间和日期,进行各种时间和日期的操作。我们可以使用Date对象的属性和方法来获取和设置日期、时间等信息,还可以用Date对象来实现一些常见的应用,如获取昨天和明天的日期、计算两个日期之间的天数、格式化日期等。