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 相关文章推荐
给Function做的OOP扩展
May 07 Javascript
javascript利用控件对windows的操作实现原理与应用
Dec 23 Javascript
JavaScript异步编程:异步数据收集的具体方法
Aug 19 Javascript
Knockout visible绑定使用方法
Nov 15 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
利用fecha进行JS日期处理
Nov 21 Javascript
JS 拦截全局ajax请求实例解析
Nov 29 Javascript
利用angularjs1.4制作的简易滑动门效果
Feb 28 Javascript
vue数字类型过滤器的示例代码
Sep 07 Javascript
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 jQuery
如何为vue的项目添加单元测试
Dec 19 Javascript
浅谈javascript中的prototype和__proto__的理解
Apr 07 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
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
JS+CSS实现经典的左侧竖向滑动菜单效果
2015/09/23 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
Vue实现自带的过滤器实例
2017/03/09 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
详解javascript中的Error对象
2019/04/25 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
便捷提取python导入包的属性方法
2018/10/15 Python
python解析yaml文件过程详解
2019/08/30 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
在python中修改.properties文件的操作
2020/04/08 Python
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
计算机专业个人简短的自我评价
2013/10/23 职场文书
什么是就业协议书
2014/04/17 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
广播体操口号
2014/06/18 职场文书
国际商务专业求职信
2014/07/15 职场文书
于丹论语心得观后感
2015/06/15 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书