Date对象

Date对象是JS原生对象,既可以作为构造函数,也可以作为工具函数;

日期的零点是(0时区): 1970年1月1日 00:00:00

1. 基础知识

如果作为构造函数, 如果不传参数,返回当前时间的对象,是一个对象。

如果传参,返回指定时间(当前时区的时间)的对象。

var date = new Date();//Sat Oct 12 2019 23:51:42 GMT+0800 (中国标准时间)
var date = new Date(2000,10,20); //Mon Nov 20 2000 00:00:00 GMT+0800 (中国标准时间)

如果作为工具函数,返回当前时间的字符串。不论有没有参数都是返回当前时间。

Date() === new Date().toString(); //true 
Date(2000,20,11) === new Date().toString() // true

2. 构造函数

1. 实例对象

 通过构造函数生成的日期实例,使用时会自动调用toString()方法

2. 传参格式

1) 一个整数(正数/负数都可以),表示当前时区的时间距离1970.1.1的毫秒数

new Date(0); //Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间)
// 返回的是距离当前时区的零点时间的毫秒数,即1970-1-1 08:00:00
new Date(0).toUTCString(); // 返回距离UTC时区0ms的时间
// "Thu, 01 Jan 1970 00:00:00 GMT"
new Date(0).toISOString(); // 时间同UTC,但是格式是 ISO8601写法
// "1970-01-01T00:00:00.000Z"
new Date(0).toJSON(); // 和ISOString()方法完全相同
// "1970-01-01T00:00:00.000Z"
// 还可以是负数,代表1970-1-1之前的时间
new Date(-1000); // Thu Jan 01 1970 07:59:59 GMT+0800 (中国标准时间)
new Date(-1000).toJSON(); // "1969-12-31T23:59:59.000Z"

2)一个日期字符串,只要是能被Date.parse()解析的都可以

new Date('2019-09-09'); // Mon Sep 09 2019 08:00:00 GMT+0800 (中国标准时间)

3) 多个整数(正数),分别代表年、月、日、时、分、秒、毫秒

其中年、月不能省略,其他都可以省略。即至少是两个参数,否则,用(1)的规则。

new Date(2000,0,1,0,0,0,0) //Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间)
new Date(10,0,1,0,0,0,0) // Sat Jan 01 1910 00:00:00 GMT+0800 (中国标准时间)
new Date(0,0,1,0,0,0,0) // Mon Jan 01 1900 00:00:00 GMT+0805 (中国标准时间)
new Date(-1,0,1,0,0,0,0) // Fri Jan 01 -0001 00:00:00 GMT+0805 (中国标准时间)
new Date(100,0,1,0,0,0,0) //Fri Jan 01 0100 00:00:00 GMT+0805 (中国标准时间)

参考上面示例:

年: 可以是四位,代表年份;三位代表0000+,两位或者一位代表1900+,负数代表公元前

月:0-11分别代表 1-12月份。 超出范围,可以换算成第二年或者前一年的月份

日:1-31。超出换算。

时:0-23。

分: 0-59。

秒:0-59。

毫秒: 0-999。

3. 静态方法

全部返回的都是毫秒数。

1. Date.now()

现在距离1970的毫秒数,它的逆运算可以是new Date(Date.now())

2. Date.parse(str)

指定的时间字符串(字符串要符合YYYY-MM-DD HH:MM:SS的格式)对应的时间距离时间零点的毫秒数。

解析失败,返回NaN

UTC时间;逆运算是new Date(num).toJSON()

Date.parse('1970-01-02'); //86400000 

3. Date.UTC(year,month[,date,hour,minute,second,miliseconds])

多个参数。参数用法和Date构造函数的多参数一致。

返回参数指定的时间距离时间零点的毫秒数

UTC时间;逆运算是new Date(num).toJSON()

Date.UTC(1970,0,2); //86400000 相当于1970-01-02

4.  实例方法

1. valueOf()

当日期对象参与‘-’运算时,自动调用valueOf()方法,返回对应的毫秒数

结果和getTime()相同。

2. to方法--日期对象调用,没有参数,返回字符串

1.toString()--当前时区时间

2.toUTCString()--UTC时间

3.toISOString()--ISO时间格式,UTC时间

4.toJSON()---同3

5.toDateString()--返回日期字符串

6.toLocaleDateString()--返回日期当地写法的字符串

7.toTimeString()--返回时间字符串

8.toLocaleTimeString()--返回时间当地写法的字符串

3. get方法--没有参数,返回整数,当前时区时间

1.getYear()---距离1900年的年数; // 119

2.getFullYear()--返回四位年位; //2019

3.getMonth()--返回0-11,代表1-12月; // 9; 代表的是10月份

4.getDate()--返回1-31,代表1-31号; // 12; 代表12号

5.getHours()--返回0-23; // 23;代表23点

6.getMinutes()--返回0-599

7.getSeconds()--返回0-59

8.getMilliseconds() -- 返回0-999

9.getDay()--返回0-6,代表星期天-星期六; // 1 星期二

10.getTime() --返回毫秒数

11.getTimezoneOffset()--返回时区差异的分钟数 //( 0时区-当前时区)*60

其中2-9提供了相应的UTC方法,返回UTC时间

如: getUTCDay()

4. set方法--传参,返回毫秒数

除了getDay(),getTimezoneOffset()没有对应的set方法,其他都有

  • setDate(date):设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。
  • setYear(year): 设置距离1900年的年数。
  • setFullYear(year [, month, date]):设置四位年份。
  • setHours(hour [, min, sec, ms]):设置小时(0-23)。
  • setMilliseconds():设置毫秒(0-999)。
  • setMinutes(min [, sec, ms]):设置分钟(0-59)。
  • setMonth(month [, date]):设置月份(0-11)。
  • setSeconds(sec [, ms]):设置秒(0-59)。
  • setTime(milliseconds):设置毫秒时间戳

除了setTime()和setYear()都有对应的UTC的set方法。

5. 应用

计算相对时间

var date = new Date();
// 将时间设为6个小时后
date.setHours(date.getHours() + 6);
原文地址:https://www.cnblogs.com/lyraLee/p/11665387.html