日期工具类

/**

  • 方法作用:日期工具类
    /
    var DateUtil = {
    /
    *

    • 方法作用:【格式化时间】
    • 使用方法
    • 示例:
    •  使用方式一:
      
    •  var now = new Date();
      
    •  var nowStr = now.dateFormat("yyyy-MM-dd hh:mm:ss");
      
    •  使用方式二:
      
    •  new Date().dateFormat("yyyy年MM月dd日");
      
    •  new Date().dateFormat("MM/dd/yyyy");
      
    •  new Date().dateFormat("yyyyMMdd");
      
    •  new Date().dateFormat("yyyy-MM-dd hh:mm:ss");
      
    • @param: format {date} 传入要格式化的日期类型
    • @param: time {date} 传入要格式化的日期或者时间戳
    • @returns: {2015-01-31 16:30:00}
      /
      ConvertDateFormat: function(format, time) {
      var date;
      if (time != undefined) {
      if (time.toString().length == 10) {
      time = time * 1000;
      }
      //console.log(“time======” + time);
      date = new Date(time);
      } else {
      date = new Date();
      }
      var o = {
      “M+”: date.getMonth() + 1, //month
      “d+”: date.getDate(), //day
      “h+”: date.getHours(), //hour
      “m+”: date.getMinutes(), //minute
      “s+”: date.getSeconds(), //second
      “q+”: Math.floor((date.getMonth() + 3) / 3), //quarter
      “S”: date.getMilliseconds() //millisecond
      }
      if (/(y+)/.test(format)) {
      format = format.replace(RegExp.$1, (date.getFullYear() + “”).substr(4 - RegExp.$1.length));
      }
      for (var k in o) {
      if (new RegExp("(" + k + “)”).test(format)) {
      format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : (“00” + o[k]).substr(("" + o[
      k]).length));
      }
      }
      return format;
      },
      /
      *
    • 方法作用:【取传入日期是周几】
    • @param: date{date} 传入日期类型
    • @returns: {周四,…}
      /
      ConvertNewWeeks: function(date) {
      if (date instanceof Date) {
      var dayNames = new Array(“周天”, “周一”, “周二”, “周三”, “周四”, “周五”, “周六”);
      return dayNames[date.getDay()];
      } else {
      return “Param error,date type!”;
      }
      },
      /
      *
    • 方法作用:【取传入日期是星期几】
    • @param: date{date} 传入日期类型
    • @returns:{星期四,…}
      /
      ConvertWeeks: function(date) {
      if (date instanceof Date) {
      var dayNames = new Array(“星期天”, “星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六”);
      return dayNames[date.getDay()];
      } else {
      return “Param error,date type!”;
      }
      },
      /
      *
    • 方法作用:【日期补0】
    • @param: e{date} 传入年|月|日|时|分|秒
    • @returns:{01,…}
      /
      ZeroFill: function(e) {
      if (e.toString().length == 1) {
      return “0” + e.toString();
      }
      return e;
      },
      /
      *
    • 方法作用:【获取当前月份的最后一天】
    • @param: e{date} 传入当前年的月份
    • @returns:{01,…}
      /
      GetMonthLast: function(time) {
      var date = new Date(time);
      var year;
      var month;
      var currentMonth = date.getMonth() + 1;
      //console.log(“currentMonth=” + currentMonth);
      //console.log(“currentMonth=”+currentMonth);
      var nextMonth = ++currentMonth;
      //console.log(‘nextMonth=’ + nextMonth);
      if (nextMonth > 12) {
      year = date.getFullYear() + 1;
      month = nextMonth - 12;
      } else {
      year = date.getFullYear();
      month = nextMonth;
      }
      //console.log(“year+ ‘/’ + month + ‘/’ + ‘01’=” + year + ‘/’ + month + ‘/’ + ‘01’);
      var nextMonthFirstDay = new Date(year + ‘/’ + month + ‘/’ + ‘01’).getTime();
      //console.log(‘nextMonthFirstDay=’ + JSON.stringify(nextMonthFirstDay));
      var oneDay = 1000 * 60 * 60 * 24;
      var timestamp = nextMonthFirstDay - oneDay;
      var lastDate = DateUtil.ConvertDateFormat(‘dd’, timestamp);
      //console.log(“lastDate-====” + lastDate);
      return lastDate;
      },
      /
      *
    • 方法作用:【计算2个日期之间的天数】
    • 传入格式:new Date(‘yyyy-MM-dd’)
    • 使用方法:dateUtil.dayMinus(startDate,endDate);
    • @startDate: {Date}起始日期
    • @endDate: {Date}结束日期
    • @return: endDate - startDate的天数差
      /
      DayMinus: function(startDate, endDate) {
      if (startDate instanceof Date && endDate instanceof Date) {
      var days = Math.floor((endDate - startDate) / (1000 * 60 * 60 * 24));
      return days;
      } else {
      return “Param error,date type!”;
      }
      },
      /
      *
    • 转换日期(格式化 js最基本的时间格式)
    • @param: {时间} date
      /
      _TransferDate: function(date) {
      if (typeof date == “string”) {
      return new Date(date.replace(/-/ig, “/”));
      } else {
      return date;
      }
      },
      /
      *
    • 获取两个时间相减的时间
    • @param: {时间} date1
    • @param: {时间} date2
    • @param: {ms|s|m|h|d} type
      */
      _Date: function(date1, date2, type) {
      var dateTime = DateUtil._NumMillSecond(date1, date2);
      switch (type) {
      case ‘ms’:
      return dateTime;
      break;
      case ‘s’:
      return Math.floor(Number(dateTime) / 1000);
      break;
      case ‘m’:
      return Math.floor(Number(dateTime) / 1000 / 60);
      break;
      case ‘h’:
      return Math.floor(Number(dateTime) / 1000 / 60 / 60);
      break;
      case ‘D’:
      return Math.floor(Number(dateTime) / 1000 / 60 / 60 / 24);
      case ‘M’:
      return Math.floor(Number(dateTime) / 1000 / 60 / 60 / 24 / 30);
      case ‘Y’:
      return Math.floor(Number(dateTime) / 1000 / 60 / 60 / 24 / 365);
      break;
      }
      },

    /**

    • 间隔毫秒
    • @param: {时间} date1
    • @param: {时间} date2
      */
      _NumMillSecond: function(date1, date2) {
      var stimes = DateUtil._GetTime(DateUtil._TransferDate(date1));
      var etimes = DateUtil._GetTime(DateUtil._TransferDate(date2));
      return etimes - stimes;
      },

    /**

    • 某个日期加上多长时间
    • @param: {某个日期} date
    • @param: {数字} num
    • @param: {ms|s|m|h|d} type
      /
      _plusDate: function(date, num, type, operator) {
      var dateTime = DateUtil._GetTime(date);
      var lastDay = DateUtil.GetMonthLast(date);
      var number;
      //console.log(“type====” + type);
      switch (type) {
      case ‘ms’:
      number = Math.floor(num);
      break;
      case ‘s’:
      number = Math.floor(num * 1000);
      break;
      case ‘m’:
      number = Math.floor(num * 1000 * 60);
      break;
      case ‘h’:
      number = Math.floor(num * 1000 * 60 * 60);
      break;
      case ‘D’:
      number = Math.floor(num * 1000 * 60 * 60 * 24);
      break;
      case ‘M’:
      number = Math.floor(num * 1000 * 60 * 60 * 24 * lastDay);
      break;
      case ‘PY’:
      number = Math.floor(num * 1000 * 60 * 60 * 24 * 365);
      case ‘RY’:
      number = Math.floor(num * 1000 * 60 * 60 * 24 * 366);
      break;
      }
      var rdate
      if (operator == ‘加’) {
      rdate = dateTime * 1 + number * 1;
      } else {
      rdate = dateTime * 1 - number * 1;
      }
      return DateUtil.ConvertDateFormat(‘yyyy-MM-dd hh:mm:ss’, rdate);
      },
      /
      *
    • 某个日期是否晚(小于)于某个日期
    • @param: {某个日期} date1
    • @param: {某个日期} date2
      /
      _After: function(date1, date2) {
      var stime = DateUtil._GetTime(DateUtil._TransferDate(date1));
      var etime = DateUtil._GetTime(DateUtil._TransferDate(date2));
      return stime < etime ? true : false;
      },
      /
      *
    • 获取年
    • @param: {某个日期} date (不传获取当前时间的年份)
      /
      GetYear: function(date) {
      if (date != undefined) {
      return DateUtil._TransferDate(date).getFullYear();
      }
      return new Date().getFullYear();
      },
      /
      *
    • 获取月
    • @param: {某个日期} date (不传获取当前时间的月)
      /
      GetMonth: function(date) {
      if (date != undefined) {
      return DateUtil._TransferDate(date).getMonth() + 1;
      }
      return new Date().getMonth() + 1;
      },
      /
      *
    • 获取日
    • @param: {某个日期} date (不传获取当前时间的日)
      /
      GetDay: function(date) {
      if (date != undefined) {
      return DateUtil._TransferDate(date).getDay();
      }
      return new Date().getDay();
      },
      /
      *
    • 获取小时
    • @param: {某个日期} date (不传获取当前时间的小时)
      /
      GetHours: function(date) {
      if (date != undefined) {
      return DateUtil._TransferDate(date).getHours();
      }
      return new Date().getHours();
      },
      /
      *
    • 获取分钟
    • @param: {某个日期} date (不传获取当前时间的分钟)
      /
      GetMinutes: function(date) {
      if (date != undefined) {
      return DateUtil._TransferDate(date).getMinutes();
      }
      return new Date().getMinutes();
      },
      /
      *
    • 获取秒
    • @param: {某个日期} date (不传获取当前时间的秒)
      /
      GetSeconds: function(date) {
      if (date != undefined) {
      return DateUtil._TransferDate(date).getSeconds();
      }
      return new Date().getSeconds();
      },
      /
      *
    • 获取毫秒
    • @param: {某个日期} date (不传获取当前时间的毫秒)
      /
      _GetTime: function(date) {
      if (date != undefined) {
      return DateUtil._TransferDate(date).getTime();
      }
      return new Date().getTime();
      },
      /
      *
    • 返回指定长度的月份集合
    • @param: {time} 时间
    • @param: {len} 长度
    • @param: {direction} 方向: 1: 前几个月; 2: 后几个月; 3:前后几个月 默认 3
    • @return: {Array} 数组
    • @example getMonths(‘2018-1-29’, 6, 1) // -> [“2018-1”, “2017-12”, “2017-11”, “2017-10”, “2017-9”, “2017-8”, “2017-7”]
      */
      getMonths(time, len, direction) {
      var mm = new Date(time).getMonth(),
      yy = new Date(time).getFullYear(),
      direction = isNaN(direction) ? 3 : direction,
      index = mm;
      var cutMonth = function(index) {
      if (index <= len && index >= -len) {
      return direction === 1 ? formatPre(index).concat(cutMonth(++index)) :
      direction === 2 ? formatNext(index).concat(cutMonth(++index)) : formatCurr(index).concat(
      cutMonth(++index))
      }
      return []
      }
      var formatNext = function(i) {
      var y = Math.floor(i / 12),
      m = i % 12
      return [yy + y + ‘-’ + (m + 1)]
      }
      var formatPre = function(i) {
      var y = Math.ceil(i / 12),
      m = i % 12
      m = m === 0 ? 12 : m
      return [yy - y + ‘-’ + (13 - m)]
      }
      var formatCurr = function(i) {
      var y = Math.floor(i / 12),
      yNext = Math.ceil(i / 12),
      m = i % 12,
      mNext = m === 0 ? 12 : m
      return [yy - yNext + ‘-’ + (13 - mNext), yy + y + ‘-’ + (m + 1)]
      }
      // 数组去重
      var unique = function(arr) {
      if (Array.hasOwnProperty(‘from’)) {
      return Array.from(new Set(arr));
      } else {
      var n = {},
      r = [];
      for (var i = 0; i < arr.length; i++) {
      if (!n[arr[i]]) {
      n[arr[i]] = true;
      r.push(arr[i]);
      }
      }
      return r;
      }
      }
      return direction !== 3 ? cutMonth(index) : unique(cutMonth(index).sort(function(t1, t2) {
      return new Date(t1).getTime() - new Date(t2).getTime()
      }))
      }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hutool的日期工具类是其中一个常用的类辅助工具之一。它提供了一系列方便的方法来处理日期和时间相关的操作。日期工具类具有以下特点: 1. 可以灵活地处理日期和时间的格式化和解析。 2. 可以进行日期的计算和比较,例如计算两个日期之间的天数或小时数差距。 3. 可以对日期进行加减操作,例如增加几天或减去几小时。 4. 可以获取当前日期和时间,以及获取特定日期的年、月、日、小时、分钟、秒等信息。 日期工具类的使用非常简单,你可以使用DateTime类来进行日期相关的操作。DateTime类继承自java.util.Date,因此可以替代原生的Date类的使用,并且还提供了许多其他实用的方法。 例如,你可以使用DateTime的now()方法获取当前日期和时间,使用format()方法将日期格式化为指定的格式,使用parse()方法将字符串解析为日期对象,使用plusDays()方法增加指定的天数等等。 总的来说,Hutool的日期工具类提供了丰富的方法和功能,可以方便地处理日期和时间相关的操作。您可以根据具体的需求选择使用适合的方法来简化您的开发工作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Hutool使用指南(一):时间日期工具](https://blog.csdn.net/C18298182575/article/details/131008226)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [hutool 工具类](https://download.csdn.net/download/LiHaoYang11/12153632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值