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 fancybox插件打造一个实用的数据传输模态弹出窗体
Jan 15 Javascript
JS实现OCX控件的事件响应示例
Sep 17 Javascript
JavaScript实现关键字高亮功能
Nov 12 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
May 17 Javascript
前端框架Vue.js构建大型应用浅析
Sep 12 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
AngularJS报错$apply already in progress的解决方法分析
Jan 30 Javascript
JS常用倒计时代码实例总结
Feb 07 Javascript
详解Vue.js基于$.ajax获取数据并与组件的data绑定
May 26 Javascript
jQuery实现网页拼图游戏
Apr 22 jQuery
vue+element加入签名效果(移动端可用)
Jun 17 Javascript
JavaScript中的几种继承方法示例
Dec 06 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/03/18 PHP
PHP 命令行参数详解及应用
2011/05/18 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
php利用array_search与array_column实现二维数组查找
2019/07/08 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
python集合的新增元素方法整理
2020/12/07 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
Douglas意大利官网:购买香水和化妆品
2020/05/27 全球购物
大学应届毕业生个人求职信
2013/09/23 职场文书
毕业生求职简历的自我评价
2013/10/23 职场文书
高三历史教学反思
2014/01/09 职场文书
小学音乐教学反思
2014/02/05 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
中学生综合素质自我评价
2015/03/06 职场文书
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python