Date
类型使用自 UTC
(Coordinated Universal Time
,国际协调时间)1970 年 1 月 1 日午夜(零时)开始经过的毫秒数来保存日期。
1. 创建Date
对象,使用 new
操作符和 Date
构造函数即可:
(1)Date
对象自动使用当前的日期和时间作为其初始值
var date = new Date();
(2)将给定的毫秒数转换为使用的时间,new Date(dateVal)
dateVal
必选项。- 如果是数字值,
dateVal
表示指定日期与1970年1月1日午夜间全球标准时间的毫秒数。- 如果是字符串,则
dateVal
按照parse
方法中的规则进行解析。
var date = new Date("2018/04/06 03:23:55");
var date = new Date(1545548361287);
(3)指定具体的日期,new Date((year,month,date[,hours[,minutes[,seconds[,ms]]]]))
year
必选项,完整的年份,比如,1976
(而不是76
)month
必选项,表示的月份,是从0
到11
之间的整数(1
月至12
月)date
必选项,表示日期,是从1
到31
之间的整数hours
可选项,如果提供了minutes
则必须给出。表示小时,是从0
到23
的整数minutes
可选项,如果提供了seconds
则必须给出。表示分钟,是从0
到59
的整数seconds
可选项,如果提供了milliseconds
则必须给出。表示秒钟,是从0
到59
的整数ms
可选项,表示毫秒,是从0
到999
的整数
var date = new Date(2018, 11, 23, 15, 3, 23);
2. 日期的运算
类型自动转换时,Date
实例如果转为数值,则等于对应的毫秒数;如果转为字符串,则等于对应的日期字符串。
- 两个日期实例对象进行减法运算时,返回的是它们间隔的毫秒数;
- 进行加法运算时,返回的是两个字符串连接而成的新字符串。
var d1 = new Date(2018, 0, 1);
var d2 = new Date(2018, 11, 1);
console.log(d2 - d1); //28857600000
console.log(d2 + d1);
// "Sat Dec 01 2018 00:00:00 GMT+0800 (中国标准时间)Mon Jan 01 2018 00:00:00 GMT+0800 (中国标准时间)"
3. 静态方法:Date.now()
Date.now()
方法返回当前时间距离时间零点(1970
年1
月1
日 00:00:00 UTC
)的毫秒数,相当于 Unix
时间戳乘以1000
。
Date.now(); // 1545549988630
4. 继承的方法
(1)valueOf()
方法返回实例对象距离时间零点(1970
年1
月1
日00:00:00 UTC
)对应的毫秒数,该方法等同于getTime
方法。
var d = new Date();
d.valueOf() // 1545550458280
d.getTime() // 1545550458280
(2)toString()
方法返回一个完整的日期字符串。因为toString
是默认的调用方法,所以如果直接读取Date
实例,就相当于调用这个方法。
var d = new Date(2018, 11, 23);
console.log(d.toString()); // Sun Dec 23 2018 00:00:00 GMT+0800 (中国标准时间)
console.log(d); // Sun Dec 23 2018 00:00:00 GMT+0800 (中国标准时间)
(3)toLocaleString()
返回一个表示该日期对象的字符串,该字符串与系统设置的地区关联。
var d = new Date(2018, 11, 23);
console.log(d.toLocaleString()); // 2018/12/23 上午12:00:00
5. get
类方法
Date
对象提供了一系列get*
方法,用来获取实例对象某个方面的值。
实例的方法名 | 作用 |
---|---|
getTime() | 返回实例距离1970年1月1日00:00:00的毫秒数,等同于valueOf方法 |
getYear() | 返回距离1900的年数 |
getFullYear() | 返回四位的年份 |
getMonth() | 返回月份(0 ~ 11,0表示1月,11表示12月) |
getDay() | 返回星期几,星期日为0,星期一为1,以此类推 |
getDate() | 返回实例对象对应每个月的几号(从1开始) |
getHours() | 返回小时数 (0 ~ 23) |
getMinutes() | 返回分钟数 (0 ~ 59) |
getSeconds() | 返回秒数 (0 ~ 59) |
getMilliseconds() | 返回毫秒数 (0 ~ 999) |
6. set
类方法
Date
对象提供了一系列set*
方法,用来设置实例对象的各个方面。
实例的方法名 | 作用 |
---|---|
setTime(milliseconds) | 设置毫秒时间戳 |
setYear(year) | 设置距离1900年的年数 |
setFullYear(year [, month, date]) | 设置四位年份 |
setMonth(month [, date]) | 设置月份(0-11) |
setDate(date) | 设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳 |
setHours(hour [, min, sec, ms]) | 设置小时(0-23) |
setMinutes(min [, sec, ms]) | 设置分钟(0-59) |
setSeconds(sec [, ms]) | 设置秒(0-59) |
setMilliseconds() | 设置毫秒(0-999) |
这些方法基本是跟get*
方法一一对应的,但是没有setDay
方法,因为星期几是计算出来的,而不是设置的。
7. 将日期转换为指定的格式
// 可以为Date原型添加如下的方法
Date.prototype.format = function(fmt) {
var o = {
"M+" : this.getMonth()+1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth()+3)/3), //季度
"S" : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt)) {
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
}
for(var k in o) {
if(new RegExp("("+ k +")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
}
}
return fmt;
}
// 调用
var time = new Date().format("yyyy-MM-dd hh:mm:ss");
console.log(time);
网友评论