es時間對象(Date)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章