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 相关文章推荐
IE6,IE7下js动态加载图片不显示错误
Jul 17 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
Jul 22 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
May 23 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
javascript相关事件的几个概念
May 21 Javascript
JQuery鼠标移到小图显示大图效果的方法
Jun 10 Javascript
bootstrap和jQuery.Gantt的css冲突 如何解决
May 29 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
Aug 05 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
Jan 15 Javascript
JavaScript函数定义方法实例详解
Mar 05 Javascript
vue中格式化时间过滤器代码实例
Apr 17 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中strlen和mb_strlen函数的区别
2014/03/07 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
项目实践之javascript技巧
2007/12/06 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
javascript数组定义的几种方法
2017/10/06 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
python读写ini配置文件方法实例分析
2015/06/30 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
简单了解Python3里的一些新特性
2019/07/13 Python
关于python3中setup.py小概念解析
2019/08/22 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
pycharm设置默认的UTF-8编码模式的方法详解
2020/06/01 Python
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
中药专业毕业自荐书范文
2014/02/08 职场文书
小学班主任评语大全
2014/04/23 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
给老师的一封感谢信
2015/01/20 职场文书
三八妇女节慰问信
2015/02/14 职场文书
2015年派出所工作总结
2015/04/24 职场文书
如何用python清洗文件中的数据
2021/06/18 Python
手残删除python之后的补救方法
2021/06/26 Python
Nginx动静分离配置实现与说明
2022/04/07 Servers