Skip to main content

JS 内置对象之 Date

Date 对象封装一个时间点,提供操作时间的 API。Date 对象中封装的是从 1970 年 1 月 1 日 0 点至今的毫秒数。

一、创建 Date 对象

// 获取客户端的当前系统时间
var now = new Date();

// 创建自定义时间
var date = new Date("1997/08/10 12:34:56");
var date = new Date(yyyy, MM, dd, hh, mm, ss);

// 复制时间对象
var oldDate = new Date("1997/08/10");
var newDate = new Date(oldDate);

二、方法

  • 日期分量:FullYear、Month、Date、Day、Hours、Minutes、Seconds、Milliseconds。
  • 每一个日期分量都有一个 getset 方法(除了 Day),分别用于获取和设置时间对象。
  • 添加 UTC,以世界时为标准,例如 getUTCDate()getUTCFullYear()

1、年 FullYear

范围:无

获取dateObj.getFullYear()

const moonLanding = new Date('July 20, 69 00:20:18');
console.log(moonLanding.getFullYear()); // 1969

设置dateObj.setFullYear(yearValue[, monthValue[, dayValue]])

参数:

  • yearValue:指定年份的整数值,例如 1997。
  • monthValue:一个 0 到 11 之间的整数值,表示从一月到十二月。
  • dayValue:一个 1 到 31 之间的整数值,表示月份中的第几天。如果指定了 dayValue 参数,就必须同时指定 monthValue。
var theBigDay = new Date();
console.log(theBigDay.setFullYear(1997)); // 874149810899
console.log(theBigDay); // Sat Sep 13 1997 22:23:30 GMT+0800 (中国标准时间)

2、月 Month

范围:0 ~ 11(0 是一月)

获取dateObj.getMonth()

const moonLanding = new Date('July 20, 69 00:20:18');
console.log(moonLanding.getMonth()); // 6

设置dateObj.setMonth(monthValue[, dayValue])

参数:

  • monthValue:介于 0 到 11 之间的整数(表示一月到十二月)。
  • dayValue:从 1 到 31 之间的整数,表示月份中的第几天。0 为上个月最后一天
var theBigDay = new Date();
console.log(theBigDay.setMonth(6)); // 1626175439836
console.log(theBigDay); // Tue Jul 13 2018 22:23:59 GMT+0800 (中国标准时间)

3、日 Date

范围:1 ~ 31

获取dateObj.getDate()

const birthday = new Date('August 10, 1997 12:34:56');
const date1 = birthday.getDate();
console.log(date1); // 10

设置dateObj.setDate(dayValue)

参数:dayValue:一个整数,表示该月的第几天。

var theBigDay = new Date(1997, 8, 9);
console.log(theBigDay.setDate(10)); // 873820800000
console.log(theBigDay); // Wed Sep 10 1997 00:00:00 GMT+0800 (中国标准时间)

4、星期 Day

范围:0 ~ 6(0 是周日)

获取dateObj.getDay()

const birthday = new Date('August 10, 1997 12:34:56');
const day1 = birthday.getDay();
console.log(day1); // 0

设置:无

5、时 Hours

范围:0 ~ 23

获取dateObj.getHours()

const day1 = new Date('March 13, 08 04:20');
console.log(day1.getHours()); // 4

设置dateObj.setHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])

参数:

  • hoursValue:一个 0 到 23 的整数,表示小时。
  • minutesValue:一个 0 到 59 的整数,表示分钟。
  • secondsValue:一个 0 到 59 的整数,表示秒数。若指定了 secondsValue,则必须同时指定 minutesValue。
  • msValue:一个 0 到 999 的数字,表示微秒数,若指定了 msValue,则必须同时指定 minutesValue 和 secondsValue。
var theBigDay = new Date();
console.log(theBigDay.setHours(12)); // 1631508006935
console.log(theBigDay); // Mon Sep 13 2018 12:40:06 GMT+0800 (中国标准时间)

6、分 Minutes

范围:0 ~ 59

获取dateObj.getMinutes()

const birthday = new Date('August 10, 1997 12:34:56');
console.log(birthday.getMinutes()); // 34

设置dateObj.setMinutes(minutesValue[, secondsValue[, msValue]])

参数:

  • minutesValue:一个 0 到 59 的整数,表示分钟数。
  • secondsValue:一个 0 到 59 的整数,表示秒数。如果指定了 secondsValue,则必须同时指定 minutesValue。
  • msValue:一个 0 到 999 的数字,表示微秒数,如果指定了 msValue,则必须同时指定 minutesValue 和secondsValue。
var theBigDay = new Date();
console.log(theBigDay.setMinutes(45)); // 1631533555976
console.log(theBigDay); // Mon Sep 13 2018 22:45:55 GMT+0800 (中国标准时间)

7、秒 Seconds

范围:0 ~ 59

获取dateObj.getSeconds()

const birthday = new Date('August 10, 1997 12:34:56');
console.log(birthday.getSeconds()); // 56

设置dateObj.setSeconds(secondsValue[, msValue])

参数:

  • secondsValue:一个 0 到 59 的整数。
  • msValue:一个 0 到 999 的数字,表示微秒数。
var theBigDay = new Date();
console.log(theBigDay.setSeconds(30)); // 1631533950109
console.log(theBigDay); // Mon Sep 13 2018 22:52:30 GMT+0800 (中国标准时间)

8、毫秒 MilliSeconds

范围:0 ~ 999

获取dateObj.getUTCMilliseconds()

const exampleDate = new Date('1997-08-10T03:04:05.678Z');
console.log(exampleDate.getUTCMilliseconds()); // 678

设置dateObj.setMilliseconds(millisecondsValue)

参数:millisecondsValue:一个 0 到 999 的数字,表示豪秒数。

var theBigDay = new Date();
console.log(theBigDay.setMilliseconds(100)); // 1631534152100
console.log(theBigDay); // Mon Sep 13 2018 22:55:52 GMT+0800 (中国标准时间)

9、格林威治时间数 Time

范围:无

获取dateObj.getTime()

const birthday = new Date('August 10, 1997 12:34:56');
console.log(birthday.getTime()); // 871187696000

设置dateObj.setTime(timeValue)

参数:timeValue:一个整数,表示从 1970-1-1 00:00:00 UTC 开始计时的毫秒数。

const theBigDay = new Date('August 10, 1997 12:34:56');
let oneDay = new Date();
console.log(oneDay.setTime(theBigDay.getTime())); // 871187696000
console.log(oneDay); // Sun Aug 10 1997 12:34:56 GMT+0800 (中国标准时间)