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(二)事件机制(2)
Dec 06 Javascript
Javascript实现的类似Google的Div拖动效果代码
Aug 09 Javascript
js去空格技巧分别去字符串前后、左右空格
Oct 21 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
node.js下LDAP查询实例分享
Sep 30 Javascript
AngularJS ng-bind-html 指令详解及实例代码
Jul 30 Javascript
js倒计时简单实现代码
Aug 11 Javascript
JS实现漂亮的时间选择框效果
Aug 20 Javascript
微信小程序-消息提示框实例
Nov 24 Javascript
深入浅析var,let,const的异同点
Aug 07 Javascript
基于elementUI实现图片预览组件的示例代码
Mar 31 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
May 15 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中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
jquery HotKeys轻松搞定键盘事件代码
2008/08/30 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
2014年减负工作总结
2014/12/10 职场文书
档案接收函格式
2015/01/30 职场文书
MySQL事务的隔离级别详情
2022/07/15 MySQL