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 getElementsByTagName的简写方式
Jun 27 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
Jan 15 Javascript
jquery iframe操作详细解析
Nov 20 Javascript
php,js,css字符串截取的办法集锦
Sep 26 Javascript
Node.js程序中的本地文件操作用法小结
Mar 06 Javascript
基于AngularJS前端云组件最佳实践
Oct 20 Javascript
详谈angularjs中路由页面强制更新的问题
Apr 24 Javascript
一个Vue页面的内存泄露分析详解
Jun 25 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
vue实现点击按钮下载文件功能
Oct 11 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 Javascript
JS 基本概念详细介绍
Oct 16 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
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
smarty简单分页的实现方法
2014/10/27 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
Firefox下提示illegal character并出现乱码的原因
2010/03/25 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
js选择器全面解析
2016/06/27 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
jQuery获取file控件中图片的宽高与大小
2016/08/04 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
解读! Python在人工智能中的作用
2017/11/14 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
Python退火算法在高次方程的应用
2018/07/26 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
python 实现aes256加密
2020/11/27 Python
露营世界:Camping World
2017/02/02 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
高中生职业生涯规划书
2014/02/24 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
项目经理任命书内容
2014/06/06 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
服务员岗位职责范本
2015/04/09 职场文书
李强感恩观后感
2015/06/17 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python