• 技术文章 >web前端 >js教程

    javaScript日期工具类DateUtils详解

    小云云小云云2017-12-09 09:52:53原创1916
    上篇文章我们为大家介绍了javaScript字符串工具类StringUtils详解,本文主要为大家详细介绍了javaScript日期工具类DateUtils,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

    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手机号码校验工具类PhoneUtils详解

    javaScript字符串工具类StringUtils详解

    JavaScript工作体系中不可或缺的函数

    以上就是javaScript日期工具类DateUtils详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:javaScript DateUtils js
    上一篇:javaScript字符串工具类StringUtils详解 下一篇:js、html获取系统当前时间方法
    大前端线上培训班

    相关文章推荐

    • innerhtml是jquery方法么• javascript怎么设置标签的背景颜色• jquery select 不可编辑怎么办• Node.js中什么是RPC通信?和Ajax有啥区别?• javascript 怎么将时间转毫秒

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网