[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)`:设置毫秒时间戳。