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