js中日期的加减法


Posted in Javascript onMay 06, 2015

今天就算对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()-30*24*60*60*1000).format('yyyy-mm-dd');
//减法操作
var yeDate = new Date(nowDate.getTime()-24*60*60*1000).format('yyyy-m-d');

通过以上两步就实现了,JS中日期的加减法,怎么样简单吧!快去试试!

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
js实现点击注册按钮开始读秒倒计时的小例子
May 11 Javascript
javascript动态判断html元素并执行不同的操作
Jun 16 Javascript
JavaScript中window.open用法实例详解
Apr 15 Javascript
浅谈javascript实现八大排序
Apr 27 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
Dec 11 Javascript
jQuery+css实现的换页标签栏效果
Jan 27 Javascript
jQuery Mobile动态刷新页面样式的实现方法
May 28 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
Jun 12 Javascript
js实现百度搜索提示框
Feb 05 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
图文介绍Vue父组件向子组件传值
Feb 17 Javascript
微信小程序APP的生命周期及页面的生命周期
Apr 19 Javascript
javascript实现回到顶部特效
May 06 #Javascript
javascript实现完美拖拽效果
May 06 #Javascript
avalonjs实现仿微博的图片拖动特效
May 06 #Javascript
avalonjs制作响应式瀑布流特效
May 06 #Javascript
javascript实现简单的html5视频播放器
May 06 #Javascript
js实现的四级左侧网站分类菜单实例
May 06 #Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
May 06 #Javascript
You might like
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
jQuery链使用指南
2015/01/20 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
vue实现未登录跳转到登录页面的方法
2018/07/17 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
水电工岗位职责
2015/02/14 职场文书
党支部对转正的意见
2015/06/02 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
python数字转对应中文的方法总结
2021/08/02 Python