Date 对象
最后更新于:2022-04-02 03:25:14
[TOC]
## 普通函数的用法
普通用法直接加参数,返回的还是当前时间
```
Date()
// "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"
Date(2000, 1, 1)
// "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)"
```
## 作为构造函数
```
//只有一个参数会被解释成毫秒数
new Date(2013) // 1970-01-01T00:00:02.013Z
new Date(2013, 0) // 2012-12-31T16:00:00.000Z
new Date(2013, 0, 1) // 2012-12-31T16:00:00.000Z
new Date(2013, 0, 1, 0) // 2012-12-31T16:00:00.000Z
new Date(2013, 0, 1, 0, 0, 0, 0) // 2012-12-31T16:00:00.000Z
```
* 年:使用四位数年份,比如`2000`。如果写成两位数或个位数,则加上`1900`,即`10`代表1910年。如果是负数,表示公元前。
* 月:`0`表示一月,依次类推,`11`表示12月。
* 日:`1`到`31`。
* 小时:`0`到`23`。
* 分钟:`0`到`59`。
* 秒:`0`到`59`
* 毫秒:`0`到`999`。
*
超出范围为折算
```
new Date(2013, 15)
//2014-03-31T16:00:00.000Z
//设置日期为0 则代表上
new Date(2013, 0, 0)
//2012-12-30T16:00:00.000Z
//参数为负,则减去
new Date(2013, -1)
//2012-11-30T16:00:00.000Z
```
### 日期的计算
```
var d1 = new Date(2019,3,2,1,1,1);
var d2 = new Date(2019,3,2,1,1,2);
d2-d1 //60 000 毫秒
```
### 静态方法
### Date.now()
`Date.now() // 1364026285194`
### Date.parse()
```
Date.parse('2011-10-10') //1318204800000 ->
2011-10-10 08:00:00
Date.parse('2011-10-10 12:52:23') //1318222343000
Date.parse('xxx') // NaN
转换失败
```
## 实例方法
### Date.prototype.valueOf()/getTime() 相同 返回毫秒时间戳
```
var date = new Date();
date.valueOf(); //1551164231227
date.getTime(); //1551164231227
```
### Date.prototype.toISOString()/toJSON() 相同 //返回ISO 标准
```
var date = new Date();
date.toISOString(); //2019-02-26T06:58:43.489Z
```
### Date.prototype.toLocaleString() 完整时间
### toLocaleDateString() 日期
### toLocaleTimeString() 时间
```
var d = new Date(2013, 0, 1);
d.toLocaleString()
// 中文版浏览器为"2013年1月1日 上午12:00:00"
// 英文版浏览器为"1/1/2013 12:00:00 AM"
//在 node 中 2019-2-26 15:02:08
d.toLocaleDateString()
// 中文版浏览器为"2013年1月1日"
// 英文版浏览器为"1/1/2013"
//在 node 中 2019-2-26
d.toLocaleTimeString()
// 中文版浏览器为"上午12:00:00"
// 英文版浏览器为"12:00:00 AM"
// 在 node 中 15:04:02
```
## get 类方法 `getMonth`等
* `getTime()`:返回实例距离1970年1月1日00:00:00的毫秒数,等同于`valueOf`方法。
* `getDate()`:返回实例对象对应每个月的几号(从1开始)。
* `getDay()`:返回星期几,星期日为0,星期一为1,以此类推。
* `getFullYear()`:返回四位的年份。
* `getMonth()`:返回月份(0表示1月,11表示12月)。
* `getHours()`:返回小时(0-23)。
* `getMilliseconds()`:返回毫秒(0-999)。
* `getMinutes()`:返回分钟(0-59)。
* `getSeconds()`:返回秒(0-59)。
* `getTimezoneOffset()`:返回当前时间与 UTC 的时区差异,以分钟表示,返回结果考虑到了夏令时因素。
```
var date =new Date()
cdate.getFullYear(); //2019
cdate.getMonth(); //1 ->2月
cdate.getDate(); //26 日
cdate.getHours(); //15 时
cdate.getMinutes(); //16 分
cdate.getSeconds(); //37 秒
```
## set 类方法
* `setDate(date)`:设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。
* `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)`:设置毫秒时间戳。
';