JavaScript: 给 Date 对象添加格式化方法

  1. /* Date/Time Format v0.2; MIT-style license
  2. By Steven Levithan <http://stevenlevithan.com> */
  3. Date.prototype.format = function(mask) {
  4.     var d = this// Needed for the replace() closure
  5.     
  6.     // If preferred, zeroise() can be moved out of the format() method for performance and reuse purposes
  7.     var zeroize = function (value, length) {
  8.         if (!length) length = 2;
  9.         value = String(value);
  10.         for (var i = 0, zeros = ''; i < (length - value.length); i++) {
  11.             zeros += '0';
  12.         }
  13.         return zeros + value;
  14.     };
  15.     
  16.     return mask.replace(/"[^"]*"|'[^']*'|/b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMs])/1?|TT|tt|[lL])/b/g, function($0) {
  17.         switch($0) {
  18.             case 'd':   return d.getDate();
  19.             case 'dd':  return zeroize(d.getDate());
  20.             case 'ddd'return ['Sun','Mon','Tue','Wed','Thr','Fri','Sat'][d.getDay()];
  21.             case 'dddd':    return ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'][d.getDay()];
  22.             case 'm':   return d.getMonth() + 1;
  23.             case 'mm':  return zeroize(d.getMonth() + 1);
  24.             case 'mmm'return ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][d.getMonth()];
  25.             case 'mmmm':    return ['January','February','March','April','May','June','July','August','September','October','November','December'][d.getMonth()];
  26.             case 'yy':  return String(d.getFullYear()).substr(2);
  27.             case 'yyyy':    return d.getFullYear();
  28.             case 'h':   return d.getHours() % 12 || 12;
  29.             case 'hh':  return zeroize(d.getHours() % 12 || 12);
  30.             case 'H':   return d.getHours();
  31.             case 'HH':  return zeroize(d.getHours());
  32.             case 'M':   return d.getMinutes();
  33.             case 'MM':  return zeroize(d.getMinutes());
  34.             case 's':   return d.getSeconds();
  35.             case 'ss':  return zeroize(d.getSeconds());
  36.             case 'l':   return zeroize(d.getMilliseconds(), 3);
  37.             case 'L':   var m = d.getMilliseconds();
  38.                     if (m > 99) m = Math.round(m / 10);
  39.                     return zeroize(m);
  40.             case 'tt':  return d.getHours() < 12 ? 'am' : 'pm';
  41.             case 'TT':  return d.getHours() < 12 ? 'AM' : 'PM';
  42.             // Return quoted strings with the surrounding quotes removed
  43.             default:    return $0.substr(1, $0.length - 2);
  44.         }
  45.     });
  46. };



blog.stevenlevithan.com/archives/date-time-format




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值