js 时间计算

第一步,引入date.format.js,这个JS的作用是将日期转为指定的格式,代码如下

-------------------------

var dateFormat = function () {
   var  token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]| "[^" ]* "|'[^']*'/g,
     timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
     timezoneClip = /[^-+\dA-Z]/g,
     pad = function (val, len) {
       val = String(val);
       len = len || 2;
       while (val.length < len) val = " 0 " + val;
       return val;
     };
  
   // Regexes and supporting functions are cached through closure
   return function (date, mask, utc) {
     var dF = dateFormat;
  
     // You can't provide utc if you skip other args (use the " UTC: " mask prefix)
     if (arguments.length == 1 && Object.prototype.toString.call(date) == " [object String] " && !/\d/.test(date)) {
       mask = date;
       date = undefined;
     }
  
     // Passing date through Date applies Date.parse, if necessary
     date = date ? new Date(date) : new Date;
     if (isNaN(date)) throw SyntaxError(" invalid date ");
  
     mask = String(dF.masks[mask] || mask || dF.masks[" default "]);
  
     // Allow setting the utc argument via the mask
     if (mask.slice(0, 4) == " UTC: ") {
       mask = mask.slice(4);
       utc = true;
     }
  
     var  _ = utc ? " getUTC " : " get ",
       d = date[_ + " Date "](),
       D = date[_ + " Day "](),
       m = date[_ + " Month "](),
       y = date[_ + " FullYear "](),
       H = date[_ + " Hours "](),
       M = date[_ + " Minutes "](),
       s = date[_ + " Seconds "](),
       L = date[_ + " Milliseconds "](),
       o = utc ? 0 : date.getTimezoneOffset(),
       flags = {
         d:  d,
         dd:  pad(d),
         ddd: dF.i18n.dayNames[D],
         dddd: dF.i18n.dayNames[D + 7],
         m:  m + 1,
         mm:  pad(m + 1),
         mmm: dF.i18n.monthNames[m],
         mmmm: dF.i18n.monthNames[m + 12],
         yy:  String(y).slice(2),
         yyyy: y,
         h:  H % 12 || 12,
         hh:  pad(H % 12 || 12),
         H:  H,
         HH:  pad(H),
         M:  M,
         MM:  pad(M),
         s:  s,
         ss:  pad(s),
         l:  pad(L, 3),
         L:  pad(L > 99 ? Math.round(L / 10) : L),
         t:  H < 12 ? " a " : " p ",
         tt:  H < 12 ? " am " : " pm ",
         T:  H < 12 ? " A " : " P ",
         TT:  H < 12 ? " AM " : " PM ",
         Z:  utc ? " UTC " : (String(date).match(timezone) || [" "]).pop().replace(timezoneClip, " "),
         o:  (o > 0 ? " - " : " + ") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
         S:  [" th ", " st ", " nd ", " rd "][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
       };
  
     return mask.replace(token, function ($0) {
       return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
     });
   };
}();
  
// Some common format strings
dateFormat.masks = {
   " default ":   " ddd mmm dd yyyy HH:MM:ss ",
   shortDate:   " m/d/yy ",
   mediumDate:   " mmm d, yyyy ",
   longDate:    " mmmm d, yyyy ",
   fullDate:    " dddd, mmmm d, yyyy ",
   shortTime:   " h:MM TT ",
   mediumTime:   " h:MM:ss TT ",
   longTime:    " h:MM:ss TT Z ",
   isoDate:    " yyyy-mm-dd ",
   isoTime:    " HH:MM:ss ",
   isoDateTime:  " yyyy-mm-dd 'T' HH:MM:ss ",
   isoUtcDateTime: " UTC:yyyy-mm-dd 'T' HH:MM:ss 'Z' "
};
  
// Internationalization strings
dateFormat.i18n = {
   dayNames: [
     " Sun ", " Mon ", " Tue ", " Wed ", " Thu ", " Fri ", " Sat ",
     " Sunday ", " Monday ", " Tuesday ", " Wednesday ", " Thursday ", " Friday ", " Saturday "
   ],
   monthNames: [
     " Jan ", " Feb ", " Mar ", " Apr ", " May ", " Jun ", " Jul ", " Aug ", " Sep ", " Oct ", " Nov ", " Dec ",
     " January ", " February ", " March ", " April ", " May ", " June ", " July ", " August ", " September ", " October ", " November ", " December"
   ]
};
  
// For convenience...
Date.prototype.format = function (mask, utc) {
   return dateFormat( this , mask, utc);
};
------------------------------------------------代码结束


第二步,将时间转换为毫秒进行加减计算,然后再用上面的js的转为指定的日期

var nowDate = new Date();
//加法操作
var ysDate = new Date(nowDate.getTime()+aaaa).format( 'yyyy-mm-dd HH:MM:ss' );//这里的格式自己定,aaaa为相差的毫秒数
//减法操作
var yeDate = new Date(nowDate.getTime()-24*60*60*1000).format( 'yyyy-m-d' );



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值