javaScript日期工具类DateUtils详解


Posted in Javascript onDecember 08, 2017

本文实例为大家分享了javaScript日期工具类的具体代码,供大家参考,具体内容如下

DateUtils = { 
    patterns: { 
      PATTERN_ERA: 'G', //Era 标志符 Era strings. For example: "AD" and "BC" 
      PATTERN_YEAR: 'y', //年 
      PATTERN_MONTH: 'M', //月份 
      PATTERN_DAY_OF_MONTH: 'd', //月份的天数 
      PATTERN_HOUR_OF_DAY1: 'k', //一天中的小时数(1-24) 
      PATTERN_HOUR_OF_DAY0: 'H', //24小时制,一天中的小时数(0-23) 
      PATTERN_MINUTE: 'm', //小时中的分钟数 
      PATTERN_SECOND: 's', //秒 
      PATTERN_MILLISECOND: 'S', //毫秒 
      PATTERN_DAY_OF_WEEK: 'E', //一周中对应的星期,如星期一,周一 
      PATTERN_DAY_OF_YEAR: 'D', //一年中的第几天 
      PATTERN_DAY_OF_WEEK_IN_MONTH: 'F', //一月中的第几个星期(会把这个月总共过的天数除以7,不够准确,推荐用W) 
      PATTERN_WEEK_OF_YEAR: 'w', //一年中的第几个星期 
      PATTERN_WEEK_OF_MONTH: 'W', //一月中的第几星期(会根据实际情况来算) 
      PATTERN_AM_PM: 'a', //上下午标识 
      PATTERN_HOUR1: 'h', //12小时制 ,am/pm 中的小时数(1-12) 
      PATTERN_HOUR0: 'K', //和h类型 
      PATTERN_ZONE_NAME: 'z', //时区名 
      PATTERN_ZONE_VALUE: 'Z', //时区值 
      PATTERN_WEEK_YEAR: 'Y', //和y类型 
      PATTERN_ISO_DAY_OF_WEEK: 'u', 
      PATTERN_ISO_ZONE: 'X' 
    }, 
    week: { 
      'ch': { 
        "0": "\u65e5", 
        "1": "\u4e00", 
        "2": "\u4e8c", 
        "3": "\u4e09", 
        "4": "\u56db", 
        "5": "\u4e94", 
        "6": "\u516d" 
      }, 
      'en': { 
        "0": "Sunday", 
        "1": "Monday", 
        "2": "Tuesday", 
        "3": "Wednesday", 
        "4": "Thursday", 
        "5": "Friday", 
        "6": "Saturday" 
      } 
    }, 
    //获取当前时间 
    getCurrentTime: function() { 
      var today = new Date(); 
      var year = today.getFullYear(); 
      var month = today.getMonth() + 1; 
      var day = today.getDate(); 
      var hours = today.getHours(); 
      var minutes = today.getMinutes(); 
      var seconds = today.getSeconds(); 
      var timeString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; 
      return timeString; 
    }, 
    /* 
     * 比较时间大小 
     * time1>time2 return 1 
     * time1<time2 return -1 
     * time1==time2 return 0 
     */ 
    compareTime: function(time1, time2) { 
      if(Date.parse(time1.replace(/-/g, "/")) > Date.parse(time2.replace(/-/g, "/"))) { 
        return 1; 
      } else if(Date.parse(time1.replace(/-/g, "/")) < Date.parse(time2.replace(/-/g, "/"))) { 
        return -1; 
      } else if(Date.parse(time1.replace(/-/g, "/")) == Date.parse(time2.replace(/-/g, "/"))) { 
        return 0; 
      } 
    }, 
    //是否闰年 
    isLeapYear: function(year) { 
      return((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0); 
    }, 
    //获取某个月的天数,从0开始 
    getDaysOfMonth: function(year, month) { 
      return [31, (this.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; 
    }, 
    getDaysOfMonth2: function(year, month) { 
      // 将天置为0,会获取其上个月的最后一天 
      month = parseInt(month) + 1; 
      var date = new Date(year, month, 0); 
      return date.getDate(); 
    }, 
    /*距离现在几天的日期:负数表示今天之前的日期,0表示今天,整数表示未来的日期 
     * 如-1表示昨天的日期,0表示今天,2表示后天 
     */ 
    fromToday: function(days) { 
      var today = new Date(); 
      today.setDate(today.getDate() + days); 
      var date = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate(); 
      return date; 
    }, 
    /** 
     * 日期时间格式化 
     * @param {Object} dateTime 需要格式化的日期时间 
     * @param {String} pattern 格式化的模式,如yyyy-MM-dd hh(HH):mm:ss.S a k K E D F w W z Z 
     */ 
    formt: function(dateTime, pattern) { 
      var date = new Date(dateTime); 
      if(Bee.StringUtils.isBlank(pattern)) { 
        return date.toLocaleString(); 
      } 
      return pattern.replace(/([a-z])\1*/ig, function(matchStr, group1) { 
        var replacement = ""; 
        switch(group1) { 
          case Bee.DateUtils.patterns.PATTERN_ERA: //G 
            break; 
          case Bee.DateUtils.patterns.PATTERN_WEEK_YEAR: //Y 
          case Bee.DateUtils.patterns.PATTERN_YEAR: //y 
            replacement = date.getFullYear(); 
            break; 
          case Bee.DateUtils.patterns.PATTERN_MONTH: //M 
            var month = date.getMonth() + 1; 
            replacement = (month < 10 && matchStr.length >= 2) ? "0" + month : month; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_DAY_OF_MONTH: //d 
            var days = date.getDate(); 
            replacement = (days < 10 && matchStr.length >= 2) ? "0" + days : days; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_HOUR_OF_DAY1: //k(1~24) 
            var hours24 = date.getHours(); 
            replacement = hours24; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_HOUR_OF_DAY0: //H(0~23) 
            var hours24 = date.getHours(); 
            replacement = (hours24 < 10 && matchStr.length >= 2) ? "0" + hours24 : hours24; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_MINUTE: //m 
            var minutes = date.getMinutes(); 
            replacement = (minutes < 10 && matchStr.length >= 2) ? "0" + minutes : minutes; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_SECOND: //s 
            var seconds = date.getSeconds(); 
            replacement = (seconds < 10 && matchStr.length >= 2) ? "0" + seconds : seconds; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_MILLISECOND: //S 
            var milliSeconds = date.getMilliseconds(); 
            replacement = milliSeconds; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_DAY_OF_WEEK: //E 
            var day = date.getDay(); 
            replacement = Bee.DateUtils.week['ch'][day]; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_DAY_OF_YEAR: //D 
            replacement = Bee.DateUtils.dayOfTheYear(date); 
            break; 
          case Bee.DateUtils.patterns.PATTERN_DAY_OF_WEEK_IN_MONTH: //F 
            var days = date.getDate(); 
            replacement = Math.floor(days / 7); 
            break; 
          case Bee.DateUtils.patterns.PATTERN_WEEK_OF_YEAR: //w 
            var days = Bee.DateUtils.dayOfTheYear(date); 
            replacement = Math.ceil(days / 7); 
            break; 
          case Bee.DateUtils.patterns.PATTERN_WEEK_OF_MONTH: //W 
            var days = date.getDate(); 
            replacement = Math.ceil(days / 7); 
            break; 
          case Bee.DateUtils.patterns.PATTERN_AM_PM: //a 
            var hours24 = date.getHours(); 
            replacement = hours24 < 12 ? "\u4e0a\u5348" : "\u4e0b\u5348"; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_HOUR1: //h(1~12) 
            var hours12 = date.getHours() % 12 || 12; //0转为12 
            replacement = (hours12 < 10 && matchStr.length >= 2) ? "0" + hours12 : hours12; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_HOUR0: //K(0~11) 
            var hours12 = date.getHours() % 12; 
            replacement = hours12; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_ZONE_NAME: //z 
            replacement = Bee.DateUtils.getZoneNameValue(date)['name']; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_ZONE_VALUE: //Z 
            replacement = Bee.DateUtils.getZoneNameValue(date)['value']; 
            break; 
          case Bee.DateUtils.patterns.PATTERN_ISO_DAY_OF_WEEK: //u 
            break; 
          case Bee.DateUtils.patterns.PATTERN_ISO_ZONE: //X 
            break; 
          default: 
            break; 
        } 
        return replacement; 
      }); 
    }, 
    /** 
     * 计算一个日期是当年的第几天 
     * @param {Object} date 
     */ 
    dayOfTheYear: function(date) { 
      var obj = new Date(date); 
      var year = obj.getFullYear(); 
      var month = obj.getMonth(); //从0开始 
      var days = obj.getDate(); 
      var daysArr = [31, (this.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
      for(var i = 0; i < month; i++) { 
        days += daysArr[i]; 
      } 
      return days; 
    }, 
    //获得时区名和值 
    getZoneNameValue: function(dateObj) { 
      var date = new Date(dateObj); 
      date = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); 
      var arr = date.toString().match(/([A-Z]+)([-+]\d+:?\d+)/); 
      var obj = { 
        'name': arr[1], 
        'value': arr[2] 
      }; 
      return obj; 
    } 
  };

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
浅析Node.js查找字符串功能
Sep 03 Javascript
node.js中的fs.writeFileSync方法使用说明
Dec 14 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
Dec 18 Javascript
浅谈javascript 函数属性和方法
Jan 21 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
Nov 04 Javascript
JS未跨域操作iframe里的DOM
Jun 01 Javascript
ES6新特性之函数的扩展实例详解
Apr 01 Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
Jul 25 Javascript
React Form组件的实现封装杂谈
May 07 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
Nov 13 Javascript
Element UI框架中巧用树选择器的实现
Dec 12 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
Dec 08 #Javascript
在Swiper内如何制作CSS3动画效果示例代码
Dec 07 #Javascript
微信小程序wx.previewImage预览图片实例详解
Dec 07 #Javascript
关于JavaScript语句后面的分号问题
Dec 07 #Javascript
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 #Javascript
微信小程序实现打开内置地图功能【附源码下载】
Dec 07 #Javascript
js实现关闭网页出现是否离开提示
Dec 07 #Javascript
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
深入解析Python中的上下文管理器
2016/06/28 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
python爬虫用mongodb的理由
2020/07/28 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
总经理秘书的岗位职责
2013/12/27 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
行政助理岗位职责
2015/02/10 职场文书
干部外出学习心得体会
2016/01/18 职场文书
《小蝌蚪找妈妈》教学反思
2016/02/23 职场文书
高中英语教学反思范文
2016/03/02 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
MySQL创建管理HASH分区
2022/04/13 MySQL