1 定义
// 4种定义方式
new Date().toLocaleString(); // 2018-1-10 20:32:12
// new Date(milliseconds),3年约等于11次方毫秒
new Date(0).toLocaleString(); // 1970-1-1 08:00:00,不知道这是个什么日子
new Date(1515580874968).toLocaleString(); // 2018-1-10 18:41:14,共13位,151打头今年不会变
new Date(-1).toLocaleString(); // 1970-1-1 07:59:59
// new Date(string)
new Date('2018-1-10 20:32:12');.toLocaleString(); // 2018-1-10 20:32:12
new Date('2018/1/10'); // 日期分隔符支持'-'和'/',其他的没有测试
new Date('2018-1-10');
new Date('2018');
// new Date(yaer, month, date?, ..., milliseconds?)和ms参数区分,至少2个参数,
new Date(2018, 1, 10).toLocaleString(); // 2018-2-10 00:00:00,注意month
new Date(2018, 15, 1).toLocaleString(); // 2019-4-1 00:00:00,支持超出范围
new Date(2018, 2, 100.2545814).toLocaleString(); // 2018-6-8 06:06:35
2 get类方法
let d = new Date(); // 2018-1-11 22:12:30,周四
// 返回的是当地时间
d.getFullYear(); // 2018
d.getMonth(); // 0,注意月份
d.getDate(); // 11
d.getDay(); // 4,周四
d.getHours(); // 22
d.getMinutes();
d.getSeconds();
d.getMilliseconds();
// 在一年最后一天,年月日时都会不同
d.getUTCFullYear(); // 2018
d.getUTCMonth(); // 0,注意月份
d.getUTCDate(); // 11
d.getUTCDay(); // 4,周四
d.getUTCHours(); // 14,晚8个小时
d.getUTCMinutes();
d.getUTCSeconds();
d.getUTCMilliseconds();
d.getTime(); // 至今的毫秒数(ms)
d.valueOf(); // 原始值,至今的毫秒数(ms)
d.getTimezoneOffset(); // -480,相差的分钟数
3 set类方法
let d = new Date();
// set类方法的返回值为毫秒数(ms),d.valueOf()。
// 方法名和get类对应,参数的要求有规律
d.setFullYear(year, month?, date?); // 注意month是0-11
d.setMonth(month, date?);
d.setDate(date);
d.setHours(h, m?, s?, ms?);
d.setMinutes(m, s?, ms?);
d.setSeconds(s, ms?);
d.setMilliseconds(ms);
// UTC类的set方法和locale的一致
d.setTime(ms);
4 toString类方法
let d = new Date();
d.toLocaleString(); // 2018-1-8 20:32:12
d.toLocaleDateString(); // 2018-1-8
d.toLocaleTimeString(); // 20:32:12
d.toString(); // Mon Jan 08 2018 20:32:12 GMT+0800 (中国标准时间)
d.toDateString(); // Mon Jan 08 2018
d.toTimeString(); // 20:32:12 GMT+0800 (中国标准时间)
d.toUTCString(); // Mon, 08 Jan 2018 12:32:12 GMT
d.toISOString(); // 2018-01-08T12:32:12.310Z
d.toJSON(); // 2018-01-01T12:32:12.310Z
5 格式化输出
Date.prototype.Format = function (format) {
let o = {
'M+': this.getMonth() + 1,
'd+': this.getDate(),
'h+': this.getHours(),
'm+': this.getMinutes(),
's+': this.getSeconds()
}
format = format.replace(/(y+)/, this.getFullYear().toString());
format = format.replace(/S/, this.getMilliseconds().toString());
for (let p in o) {
let r = new RegExp('(' + p + ')');
let v = o[p].toString();
// 匹配长度为1,原样输出;匹配长度为2,原长度为1的需要补0
format = format.replace(r, RegExp.$1.length == 1 ? v : v.length == 2 ? v : '0' + v);
}
return format;
}
// 使用
new Date().Format('yyyy-MM-dd hh:mm:ss S');
参考:
http://www.runoob.com/jsref/jsref-obj-date.html
https://www.cnblogs.com/zhangpengshou/archive/2012/07/19/2599053.html