25. JS Date(时间/日期)对象
1. 前言
Date 对象是 JavaScript 内置的对象,通过它您可以访问计算机系统的时间,此外,Date 对象中还提供了多种用于管理、操作和格式化时间/日期的方法。
2. 创建 Date 对象
在开始处理时间和日期之前,我们需要先创建一个 Date 对象。与其他对象(数组对象、字符串对象等)不同,Date 对象不能直接声明,必须通过 Date() 函数定义。
JavaScript 中提供了四种不同的方法来创建 Date 对象,如下所示:
var time = new Date(); var time = new Date(milliseconds); var time = new Date(datestring); var time = new Date(year, month, date[, hour, minute, second, millisecond]);
参数说明如下:
- 不提供参数:若调用 Date() 函数时不提供参数,则创建一个包含当前时间和日期的 Date 对象;
- milliseconds(毫秒):若提供一个数值作为参数,则会将这个参数视为一个以毫秒为单位的时间值,并返回自 1970-01-01 00:00:00 起,经过指定毫秒数的时间,例如 new Date(5000) 会返回一个 1970-01-01 00:00:00 经过 5000 毫秒之后的时间;
- datestring(日期字符串):若提供一个字符串形式的日期作为参数,则会将其转换为具体的时间,日期的字符串形式有两种,如下所示:
- YYYY/MM/dd HH:mm:ss(推荐):若省略时间部分,则返回的 Date 对象的时间为 00:00:00;
- YYYY-MM-dd HH:mm:ss:若省略时间部分,则返回的 Date 对象的时间为 08:00:00(加上本地时区),若不省略,在 IE 浏览器中会转换失败。
- 将具体的年月日、时分秒转换为 Date 对象,其中:
- year:表示年,为了避免错误的产生,推荐使用四位的数字来表示年份;
- month:表示月,0 代表 1 月,1 代表 2 月,以此类推;
- date:表示月份中的某一天,1 代表 1 号,2 代表 2 号,以此类推;
- hour:表示时,以 24 小时制表示,取值范围为 0 ~ 23;
- minute:表示分,取值范围为 0 ~ 59;
- second:表示秒,取值范围为 0 ~ 59;
- millisecond:表示毫秒,取值范围为 0 ~ 999。
示例代码如下:
var time1 = new Date(); var time2 = new Date(1517356800000); var time3 = new Date("2018/12/25 12:13:14"); var time4 = new Date(2020, 9, 12, 15, 16, 17); document.write(time1 + "<br>"); // 输出:Fri Jul 23 2021 13:41:39 GMT+0800 (中国标准时间) document.write(time2 + "<br>"); // 输出:Wed Jan 31 2018 08:00:00 GMT+0800 (中国标准时间) document.write(time3 + "<br>"); // 输出:Tue Dec 25 2018 12:13:14 GMT+0800 (中国标准时间) document.write(time4 + "<br>"); // 输出:Mon Oct 12 2020 15:16:17 GMT+0800 (中国标准时间)
3. Date 对象中的属性
下表中列举了 Date 属性中提供的属性及其描述:
属性 | 描述 |
---|---|
constructor | 返回创建 Date 对象的原型函数 |
prototype | 通过该属性您可以向对象中添加属性和方法 |
示例代码如下:
var time = new Date(); Date.prototype.name = null; time.name = "JavaScript"; document.write(time.constructor + "<br>"); // 输出:function Date() { [native code] } document.write(time.name + "<br>"); // 输出:JavaScript
4. Date 对象中的方法
下表中列举了 Date 属性中提供的方法及其描述:
方法 | 描述 |
---|---|
getDate() | 从 Date 对象返回一个月中的某一天 (1 ~ 31) |
getDay() | 从 Date 对象返回一周中的某一天 (0 ~ 6) |
getMonth() | 从 Date 对象返回月份 (0 ~ 11) |
getFullYear() | 从 Date 对象返回四位数字的年份 |
getYear() | 已废弃,请使用 getFullYear() 方法代替 |
getHours() | 返回 Date 对象的小时 (0 ~ 23) |
getMinutes() | 返回 Date 对象的分钟 (0 ~ 59) |
getSeconds() | 返回 Date 对象的秒数 (0 ~ 59) |
getMilliseconds() | 返回 Date 对象的毫秒(0 ~ 999) |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒数 |
getTimezoneOffset() | 返回本地时间与格林威治标准时间 (GMT) 的分钟差 |
getUTCDate() | 根据通用时间从 Date 对象返回月中的一天 (1 ~ 31) |
getUTCDay() | 根据通用时间从 Date 对象返回周中的一天 (0 ~ 6) |
getUTCMonth() | 根据通用时间从 Date 对象返回月份 (0 ~ 11) |
getUTCFullYear() | 根据通用时间从 Date 对象返回四位数的年份 |
getUTCHours() | 根据通用时间返回 Date 对象的小时 (0 ~ 23) |
getUTCMinutes() | 根据通用时间返回 Date 对象的分钟 (0 ~ 59) |
getUTCSeconds() | 根据通用时间返回 Date 对象的秒钟 (0 ~ 59) |
getUTCMilliseconds() | 根据通用时间返回 Date 对象的毫秒(0 ~ 999) |
parse() | 返回1970年1月1日午夜到指定日期(字符串)的毫秒数 |
setDate() | 设置 Date 对象中月的某一天 (1 ~ 31) |
setMonth() | 设置 Date 对象中月份 (0 ~ 11) |
setFullYear() | 设置 Date 对象中的年份(四位数字) |
setYear() | 已废弃,请使用 setFullYear() 方法代替 |
setHours() | 设置 Date 对象中的小时 (0 ~ 23) |
setMinutes() | 设置 Date 对象中的分钟 (0 ~ 59) |
setSeconds() | 设置 Date 对象中的秒钟 (0 ~ 59) |
setMilliseconds() | 设置 Date 对象中的毫秒 (0 ~ 999) |
setTime() | 以毫秒设置 Date 对象 |
setUTCDate() | 根据通用时间设置 Date 对象中月份的一天 (1 ~ 31) |
setUTCMonth() | 根据通用时间设置 Date 对象中的月份 (0 ~ 11) |
setUTCFullYear() | 根据通用时间设置 Date 对象中的年份(四位数字) |
setUTCHours() | 根据通用时间设置 Date 对象中的小时 (0 ~ 23) |
setUTCMinutes() | 根据通用时间设置 Date 对象中的分钟 (0 ~ 59) |
setUTCSeconds() | 根据通用时间设置 Date 对象中的秒钟 (0 ~ 59) |
setUTCMilliseconds() | 根据通用时间设置 Date 对象中的毫秒 (0 ~ 999) |
toSource() | 返回该对象的源代码 |
toString() | 把 Date 对象转换为字符串 |
toTimeString() | 把 Date 对象的时间部分转换为字符串 |
toDateString() | 把 Date 对象的日期部分转换为字符串 |
toGMTString() | 已废弃,请使用 toUTCString() 方法代替 |
toUTCString() | 根据通用时间,把 Date 对象转换为字符串 |
toLocaleString() | 根据本地时间格式,把 Date 对象转换为字符串 |
toLocaleTimeString() | 根据本地时间格式,把 Date 对象的时间部分转换为字符串 |
toLocaleDateString() | 根据本地时间格式,把 Date 对象的日期部分转换为字符串 |
UTC() | 根据通用时间返回 1970 年 1 月 1 日 到指定日期的毫秒数 |
valueOf() | 返回 Date 对象的原始值 |
示例代码如下:
var time = new Date(); document.write(time.getDate() + "<br>"); // 输出:23 document.write(time.getDay() + "<br>"); // 输出:5 document.write(time.getFullYear() + "<br>"); // 输出:2021 document.write(time.getHours() + "<br>"); // 输出:16 document.write(time.getMonth() + "<br>"); // 输出:6 document.write(time.getTime() + "<br>"); // 输出:1627028869285 document.write(time.getUTCDate() + "<br>"); // 输出:23 document.write(time.toDateString() + "<br>"); // 输出:Fri Jul 23 2021 document.write(time.toString() + "<br>"); // 输出:Fri Jul 23 2021 16:29:57 GMT+0800 (中国标准时间) document.write(time.toLocaleDateString() + "<br>"); // 输出:2021/7/23 document.write(time.toLocaleTimeString() + "<br>"); // 输出:下午4:31:00 document.write(time.toLocaleString() + "<br>"); // 输出:2021/7/23下午4:31:00