一、Date类型简介
Date类型是Javascript中的内置对象,用于处理日期和时间相关的数据。
在JavaScript中,Date类型的实例是从1970年1月1日00:00:00以来的毫秒数。可以使用以下任何一种方式创建一个Date对象:
//不带参数的构造函数,创建当前系统的时间 const date1 = new Date(); //传递一个代表指定日期的字符串作为参数,注意字符串必须符合GMT格式 const date2 = new Date("January 1 2019"); //传递一个代表指定日期的时间戳作为参数 const date3 = new Date(1589565564318);
二、Date类型方法
1. 获取年份、月份、日期、小时、分钟、秒数等
可以使用以下方法获取Date对象的具体时间信息:
- getFullYear() 返回一个表示年份的四位数字
- getMonth() 返回0~11表示月份
- getDate() 返回1~31表示每月的日期数
- getHours() 返回0~23表示小时数
- getMinutes() 返回0~59表示分钟数
- getSeconds() 返回0~59表示秒数
- getMilliseconds() 返回0~999表示毫秒数
const date = new Date(); console.log(date.getFullYear()); // 返回当前年份 console.log(date.getMonth()); // 返回当前月份 console.log(date.getDate()); // 返回当前日期 console.log(date.getHours()); // 返回当前小时 console.log(date.getMinutes()); // 返回当前分钟 console.log(date.getSeconds()); // 返回当前秒数 console.log(date.getMilliseconds()); // 返回当前毫秒数
2. 时间的比较
可以使用以下方法比较两个时间的先后顺序:
- getTime() 返回一个代表日期的时间戳,该时间戳表示从1970年1月1日00:00:00以来的毫秒数。
- valueOf() 返回一个代表日期的时间戳,可以直接进行数字比较。
- getTimezoneOffset() 返回当前时区与UTC的时间差,单位为分钟。
const date1 = new Date("January 1 2020"); const date2 = new Date("January 1 2021"); if (date1.getTime() < date2.getTime()) { console.log("date1在date2之前"); } if (date1.valueOf() < date2.valueOf()) { console.log("date1在date2之前"); } console.log(date1.getTimezoneOffset()); // 返回当前时区与UTC的时间差,单位为分钟
3. 时间的格式化
可以使用以下方法将Date对象格式化为字符串:
- toDateString() 将日期部分转换为字符串,格式为"Month day year"
- toLocaleString() 将完整的日期和时间转换为本地字符串表示,格式由浏览器厂商决定
- toLocaleDateString() 将日期转换为本地字符串表示,格式由浏览器厂商决定
- toLocaleTimeString() 将时间转换为本地字符串表示,格式由浏览器厂商决定
- toString() 将完整的日期和时间转换为字符串表示,格式由浏览器厂商决定
- toTimeString() 将时间部分转换为字符串,格式为"hours:minutes:seconds"
- toUTCString() 将完整的日期和时间转换为UTC时间表示,格式为"Fri, 12 Feb 2021 13:01:37 GMT"
const date = new Date("2021-02-14T10:20:30Z"); console.log(date.toDateString()); // 返回"Sun Feb 14 2021" console.log(date.toLocaleString()); // 返回"2021/2/14 上午6:20:30" console.log(date.toLocaleDateString()); // 返回"2021/2/14" console.log(date.toLocaleTimeString()); // 返回"上午10:20:30" console.log(date.toString()); // 返回"Sun Feb 14 2021 18:20:30 GMT+0800 (中国标准时间)" console.log(date.toTimeString()); // 返回"10:20:30 GMT+0800 (中国标准时间)" console.log(date.toUTCString()); // 返回"Sun, 14 Feb 2021 02:20:30 GMT"
三、ES6新增的Date类型方法
1. 时间的比较
可以使用ES6新增的方法比较两个时间的先后顺序:
- Date.parse() 将一个日期字符串解析为时间戳,返回毫秒数。
- Date.now() 返回当前时间的时间戳,精度为毫秒。
const date1 = Date.parse("2021-01-01"); const date2 = Date.parse("2022-01-01"); if (date1 < date2) { console.log("date1在date2之前"); } console.log(Date.now()); // 返回当前时间的时间戳,精度为毫秒
2. 时间的转换
可以使用ES6新增的方法将时间单位进行转换:
- getTime() 返回一个代表日期的时间戳,该时间戳表示从1970年1月1日00:00:00以来的毫秒数。
- valueOf() 返回一个代表日期的时间戳,可以直接进行数字比较。
- getTimezoneOffset() 返回当前时区与UTC的时间差,单位为分钟。
const minutes = 60 * 1000; const hours = 60 * minutes; const days = 24 * hours; console.log(minutes + "毫秒是一分钟"); console.log(hours + "毫秒是一小时"); console.log(days + "毫秒是一天");
四、总结
Date类型是处理JavaScript日期和时间的非常重要的内置对象,提供了多种方法用于获取或者格式化日期和时间,同时也可以比较不同日期之间的先后顺序。