1. 创建
使用自 UTC 1970 年 1 月 1 日零时开始经过的毫秒数来保存日期。保存的日期能够精确到 1970 年 1 月 1 日之前或之后的 285 616 年。
1.1 当前时间
使用 new 操作符和 Date 构造函数
var now = new Date();
不传递参数的情况下,自动获取当前的日期和时间,这个时间是客户端本地的时间。
1.2 特定时间
如果想创建特定的日期和时间,必须传入表示从 1970 年到该日期的毫秒数。
Date.parse()
接受一个表示日期的字符串参数,返回相应的日期毫秒数。会因地区和实现而异,一般接受以下格式:
月/日/年 ,如: 6/13/2014
英文月名 日,年 ,如:january 12,2014
英文星期名 英文月名 日 年 时:分:秒 时区 ,如:Tue May 25 2014 00:00:00 GMT-0700
ISO 8601 扩展格式 YYYY-MM-DDTHH:mm:ss.sssZ ,如:2014-05-25T00:00:00
如果传入的字符串不能表示日期,会返回 NaN
Date.UTC()
同样会返回表示日期的毫秒数,但它在构建时使用不同的信息。
年份、从 0 开始的月份(0-11),两个是必须的
日期(1-31)、小时数(0-23)、分钟、秒以及毫秒数
时间是基于 GMT
var y2k = new Date(Date.UTC(2000,0));
//2000.1.1 00:00:00
var allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55));
//2005.5.5 17:55:55
实际上,直接将表示日期的字符串传入构造函数,也会在后台调用这两个方法,但时间是基于本地时区的。
var now = new Date(2017,11,20);
// Wed Dec 20 2017 00:00:00 GMT+0800 (中国标准时间)
Date.now()
返回调用这个方法时的日期和时间的毫秒数,简化了使用 Date
对象分析代码的工作
1.3 转换毫秒数
两个 Date 实例相减,得到的就是两个标准时间相差的毫秒数
Date 实例进行
date*1 / date/1
等也会得到毫秒数,实际上就是通过Number()
方法就可以转换为毫秒数,所以只要能够进行类型转换的都可以getTime 方法
2. 继承的方法
与其他引用类型一样,Date 类型也重写了 toLocaleString()
、toString()
和 valueOf()
方法
toLocaleString()
会按照与浏览器设置的地区相适应的格式返回日期和时间,意味着时间格式中会包含 AM 或 PM,但不会包含时区信息,格式因浏览器而异
toString()
通常会返回带有时区信息的日期和时间
valueOf()
返回日期的毫秒表示
var now = new Date();
console.log(now.toLocaleString());
console.log(now.toString());
console.log(now.valueOf());
// chrome
//2017/11/20 下午6:36:34
//Mon Nov 20 2017 18:36:34 GMT+0800 (中国标准时间)
//1511174194529
3. 日期格式方法
专门用于将日期格式转化为字符串的方法。
toDateString()
以特定的实现格式显示星期几、月、日和年toTimeString()
以特定的格式显示时、分、秒和时区toLocaleDateString()
区别地区的显示星期几、月、日和年toLocaleTimeString()
以特定的格式显示时、分、秒toUTCString()
以特定的实现格式显示完整的 UTC 日期
4. 日期/时间组件方法
直接取得和设置日期值中特定部分的方法。UTC 日期指的是在没有时区偏差的情况下(将日期转化为 GMT 时间)的日期值
getTime()
返回表示日期的毫秒数,与 valueOf 方法返回的值相同setTime()
以毫秒数设置日期,会改变整个日期getFullYear()
取得 4 位数的年份getUTCFullYea()r
返回 UTC 日期的 4 位数年份setFullYear()
设置日期的年份,传入的值必须是 4 位数setUTCFullYear()
设置 UTC 日期中的年份,传入的值必须是 4 位数getMonth()
返回日期中的月份,从 0 - 11getUTCMonth()
返回 UTC 日期中的月份setMonth()
设置日期中的月份,传入值必须大于 0 ,超出 11 则增加年份setUTCMonth()
设置 UTC 日期中的月份,传入值必须大于 0 ,超出 11 则增加年份getDate()
返回日期月份中的天数,从 1 - 31getUTCDate()
返回 UTC 日期月份中的天数,从 1 - 31setDate()
设置日期月份中的天数,传入值超过应有天数,月份增加setUTCDate()
设置 UTC 日期月份中的天数,传入值超过应有天数,月份增加getDay()
返回日期中的星期,从 1 - 6getUTCDay()
返回 UTC 日期中的星期,从 1 - 6getHours()
返回日期中的小时数,从 0 - 23getUTCHours()
返回 UTC 日期中的小时数,从 0 - 23setHours()
设置日期中的小时数,超出 23,则相应增加天数setUTCHours()
设置 UTC 日期中的小时数,超出 23,则相应增加天数getMinutes()
返回日期中的分钟数,从 0 - 59getUTCMinutes()
返回 UTC 日期中的分钟数,从 0 - 59setMinutes()
设置日期中的分钟数,超出59,则增加小时数setUTCMinutes()
设置UTC 日期中的分钟数,超出59,则增加小时数getSeconds()
返回日期中的秒数,从 0 - 59getUTCSeconds()
返回 UTC 日期中的秒数,从 0 - 59setSeconds()
设置日期中的秒数,超出59,则增加分钟数setUTCSeconds()
设置 UTC 日期中的秒数,超出59,则增加分钟数getMilliseconds()
返回日期中的毫秒数getUTCMilliseconds()
返回 UTC 日期中的毫秒数setMilliseconds()
设置日期中的毫秒数setUTCMilliseconds()
设置 UTC 日期中的毫秒数getTimezoneOffset()
返回本地时间与 UTC 时间相差的分钟数