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 相关文章推荐
JavaScript网页制作特殊效果用随机数
May 22 Javascript
用js统计用户下载网页所需时间的脚本
Oct 15 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
Node.js读取文件内容示例
Mar 07 Javascript
Bootstrap警告(Alerts)的实现方法
Mar 22 Javascript
layui选项卡效果实现代码
May 19 Javascript
JS中实现一个下载进度条及播放进度条的代码
Jun 10 Javascript
jquery实现直播弹幕效果
Nov 28 jQuery
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
Jan 04 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
May 14 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音乐采集(部分代码)
2007/02/14 PHP
php 清除网页病毒的方法
2008/12/05 PHP
为你总结一些php系统类函数
2015/10/21 PHP
php实现简单爬虫的开发
2016/03/28 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
Python实现栈的方法
2015/05/26 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
计算机专业应届毕业生自荐信
2013/09/26 职场文书
实习评语
2013/12/16 职场文书
主办会计岗位职责
2014/03/13 职场文书
股权投资意向书
2014/04/01 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
正确使用MySQL update语句
2021/05/26 MySQL
html5调用摄像头实例代码
2021/06/28 HTML / CSS
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL