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 相关文章推荐
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
浅谈jquery事件处理
Apr 24 Javascript
深入php面向对象、模式与实践
Feb 16 Javascript
深入理解jquery跨域请求方法
May 18 Javascript
Bootstrap 附加导航(Affix)插件实例详解
Jun 01 Javascript
vue v-model动态生成详解
Jun 30 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
Sep 26 Javascript
JS数组求和的常用方法总结【5种方法】
Jan 14 Javascript
用npm-run实现自动化任务的方法示例
Jan 14 Javascript
微信小程序中button去除默认的边框实例代码
Aug 01 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
Apr 09 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中chdir()函数用法实例
2014/11/13 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
js下用eval生成JSON对象
2010/09/17 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
分析python服务器拒绝服务攻击代码
2014/01/16 Python
Python中的map、reduce和filter浅析
2014/04/26 Python
Python新手实现2048小游戏
2015/03/31 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
单位法定代表人授权委托书
2014/09/20 职场文书
财务经理岗位职责
2015/01/31 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
暂住证证明
2015/06/19 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL