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 相关文章推荐
在 IE 中调用 javascript 打开 Excel 表
Dec 21 Javascript
jquery学习笔记二 实现可编辑的表格
Apr 09 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
Jul 20 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
May 13 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
Mar 04 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
Aug 14 jQuery
js 原生判断内容区域是否滚动到底部的实例代码
Nov 15 Javascript
动手写一个angular版本的Message组件的方法
Dec 16 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
Sep 23 Javascript
vue 开发企业微信整合案例分析
Dec 02 Javascript
关于element的表单组件整理笔记
Feb 05 Javascript
5种方法告诉你如何使JavaScript 代码库更干净
Sep 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 遍历文件实现代码
2011/05/04 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
2019/01/22 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Python常见异常分类与处理方法
2017/06/04 Python
python多维数组切片方法
2018/04/13 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
房屋改造计划书
2014/01/10 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
写自荐信的注意事项
2014/03/09 职场文书
宣传标语大全
2014/07/01 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
鼋头渚导游词
2015/02/05 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技