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 相关文章推荐
网页常用特效代码整理
Jun 23 Javascript
js中更短的 Array 类型转换
Oct 30 Javascript
使用javascript获取页面名称
Dec 23 Javascript
JavaScript改变CSS样式的方法汇总
May 07 Javascript
JS实现下拉菜单赋值到文本框的方法
Aug 18 Javascript
EasyUI布局 高度自适应
Jun 04 Javascript
jQuery自制提示框tooltip改进版
Aug 01 Javascript
JS实现的走迷宫小游戏完整实例
Jul 19 Javascript
浅谈angular.copy() 深拷贝
Sep 14 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
Feb 11 Javascript
ES6 如何改变JS内置行为的代理与反射
Feb 11 Javascript
OpenLayers3实现地图显示功能
Sep 25 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使用curl通过代理获取数据的实现方法
2016/05/16 PHP
thinkphp分页实现效果
2016/10/13 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
jQuery 操作XML入门
2008/12/25 Javascript
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
jquery.validate使用攻略 第一部
2010/07/01 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
python字符串替换示例
2014/04/24 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
微信小程序python用户认证的实现
2019/07/29 Python
django和vue实现数据交互的方法
2019/08/21 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
汽车专业人才自我鉴定范文
2013/12/29 职场文书
厨师长岗位职责
2014/03/02 职场文书
师范生自荐信模板
2014/05/28 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
感恩主题班会教案
2015/08/12 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android