es时间对象(Date)

1 篇文章 0 订阅
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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值