完全掌握JavaScript的Date对象

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对象来实现一些常见的应用,如获取昨天和明天的日期、计算两个日期之间的天数、格式化日期等。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。