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 String对象扩展HTML编码和解码的方法
Jun 02 Javascript
JScript 脚本实现文件下载 一般用于下载木马
Oct 29 Javascript
js parsefloat parseint 转换函数
Jan 21 Javascript
五段实用的js高级技巧
Dec 20 Javascript
仅30行代码实现Javascript中的MVC
Feb 15 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
js Date()日期函数浏览器兼容问题解决方法
Sep 12 Javascript
vue input 输入校验字母数字组合且长度小于30的实现代码
May 16 Javascript
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
Jan 09 jQuery
微信小程序系列之自定义顶部导航功能
May 21 Javascript
node实现mock-plugin中间件的方法
Dec 25 Javascript
vue-socket.io跨域问题有效解决方法
Feb 11 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
AM/FM收音机的安装与调试
2021/03/02 无线电
php基础知识:类与对象(1)
2006/12/13 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
php关联数组快速排序的方法
2015/04/17 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
javascript数组排序汇总
2015/07/07 Javascript
Vue表单实例代码
2016/09/05 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
python去掉行尾的换行符方法
2017/01/04 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
Etam德国:内衣精品店
2019/08/25 全球购物
店长岗位的工作内容
2013/11/12 职场文书
辩护词格式
2015/05/22 职场文书
mysql sql常用语句大全
2022/06/21 MySQL