javascript 日期工具汇总

 更新时间:2021年10月14日 15:28:41   作者:web前端从业者  
这篇文章主要为大家详细介绍了javaScript日期工具类的汇总,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
let Utils = {
  /**
   * 是否为闫年
   * @return {Boolse} true|false
   */
  isLeapYear: function(y) {
    return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
  },
  /**
   * 返回星期数
   * @return {Number}
   */
  getWhatDay: function(year, month, day) {
    let date = new Date(year + '/' + month + '/' + day);
    let index = date.getDay();
    let dayNames = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
    return dayNames[index];
  },
  /**
   * 返回星期数
   * @return {Number}
   */
  getMonthPreDay: function(year, month) {
    let date = new Date(year + '/' + month + '/01');
    let day = date.getDay();
    if (day == 0) {
      day = 7;
    }
    return day;
  },
  /**
   * 返回月份天数
   * @return {Number}
   */
  getMonthDays: function(year, month) {
    if (/^0/.test(month)) {
      month = month.split('')[1];
    }
    return [0, 31, this.isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
  },
  /**
   * 补齐数字位数
   * @return {string}
   */
  getNumTwoBit: function(n) {
    n = Number(n);
    return (n > 9 ? '' : '0') + n;
  },
  /**
   * 日期对象转成字符串
   * @return {string}
   */
  date2Str: function(date, split) {
    if (typeof date == 'string') return date;
    split = split || '-';
    let y = date.getFullYear();
    let m = this.getNumTwoBit(date.getMonth() + 1);
    let d = this.getNumTwoBit(date.getDate());
    return [y, m, d].join(split);
  },
  /**
   * 返回日期格式字符串
   * @param {Number} 0返回今天的日期、1返回明天的日期,2返回后天得日期,依次类推
   * @return {string} '2014-12-31'
   */
  getDay: function(i) {
    i = i || 0;
    let date = new Date();
    let diff = i * (1000 * 60 * 60 * 24);
    date = new Date(date.getTime() + diff);
    return this.date2Str(date);
  },
  /**
   * 时间戳转换为日期格式
   * @return {String}
   */
  timestampToDate: function(timestamp) {
    let date = new Date(timestamp);
    return date.getFullYear() + '-' + getNumTwoBit(date.getMonth() + 1) + '-' + getNumTwoBit(date.getDate());
  },
  /**
   * 时间比较
   * @return {Boolean}
   */
  compareDate: function(date1, date2) {
    let startTime = new Date(date1.replace('-', '/').replace('-', '/'));
    let endTime = new Date(date2.replace('-', '/').replace('-', '/'));
    if (startTime >= endTime) {
      return false;
    }
    return true;
  },
  /**
   * 时间比较
   * @return {Boolean}
   */
  compareDateArr: function(date1, date2) {
    let startTime = new Date();
    startTime.setFullYear(parseInt(date1[0]), parseInt(date1[1]) - 1, parseInt(date1[2]));
    startTime.setHours(parseInt(date1[3]), parseInt(date1[4]));
    let endTime = new Date();
    endTime.setFullYear(parseInt(date2[0]), parseInt(date2[1]) - 1, parseInt(date2[2]));
    endTime.setHours(parseInt(date2[3]), parseInt(date2[4]));
    if (startTime >= endTime) {
      return false;
    }
    return true;
  },
  /**
   * 时间是否相等
   * @return {Boolean}
   */
  isEqual: function(date1, date2) {
    let startTime = new Date(date1).getTime();
    let endTime = new Date(date2).getTime();
    if (startTime == endTime) {
      return true;
    }
    return false;
  },
  getDateArr(str) {
    return [this.getYear(str), this.getMonth(str), this.getDate(str), this.getHour(str), this.getMinute(str)];
  },
  isDateString(str) {
    return /\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}/.test(str) || /^([01][0-9]|2[0-3])(:[0-5][0-9]){1,2}$/.test(str);
  },
  getYear(value) {
    return this.isDateString(value) ? value.split(' ')[0].split(/-|\/|\./)[0] : value.getFullYear();
  },
  getMonth(value) {
    return this.isDateString(value) ? value.split(' ')[0].split(/-|\/|\./)[1] : value.getMonth() + 1;
  },
  getDate(value) {
    return this.isDateString(value) ? value.split(' ')[0].split(/-|\/|\./)[2] : value.getDate();
  },
  getHour(value) {
    if (this.isDateString(value)) {
      const str = value.split(' ')[1] || '00:00:00';
      return str.split(':')[0];
    }
    return value.getHours();
  },
  getMinute(value) {
    if (this.isDateString(value)) {
      const str = value.split(' ')[1] || '00:00:00';
      return str.split(':')[1];
    }
    return value.getMinutes();
  }
};
export default Utils;

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • 谈谈JavaScript中function多重理解

    谈谈JavaScript中function多重理解

    Function是javascript里最常用的一个概念,javascript里的function是最容易入手的一个功能,但它也是javascript最难理解最难掌握的一个概念,接下来通过本篇文章给大家介绍javascript中的function多重理解,小伙伴们一起来学习吧
    2015-08-08
  • js实现表格的隔行变色和上下移动

    js实现表格的隔行变色和上下移动

    这篇文章主要为大家详细介绍了js实现表格的隔行变色和上下移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • JavaScript中关键字 in 的使用方法详解

    JavaScript中关键字 in 的使用方法详解

    这篇文章主要介绍了JavaScript中关键字 in 的使用方法详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • 如何利用echarts画雷达图和折柱混合

    如何利用echarts画雷达图和折柱混合

    最近使用echarts做的一个H5的成绩数据报告,里面使用了雷达图已经折线图和柱状图,下面这篇文章主要给大家介绍了关于如何利用echarts画雷达图和折柱混合的相关资料,需要的朋友可以参考下
    2022-04-04
  • js表数据排序 sort table data

    js表数据排序 sort table data

    对于表格的排序,是很不错的一个功能,方便用户快速的分析一些数据。
    2009-02-02
  • 微信小程序通过js实现瀑布流布局详解

    微信小程序通过js实现瀑布流布局详解

    这篇文章主要介绍了微信小程序通过js实现瀑布流布局详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • js两种拼接字符串的简单方法(必看)

    js两种拼接字符串的简单方法(必看)

    下面小编就为大家带来一篇js两种拼接字符串的简单方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • JavaScript 中创建私有成员

    JavaScript 中创建私有成员

    这篇文章主要介绍了JavaScript 中创建私有成员,下面介绍以 # 作为前缀几种在 JavaScript 代码中实现私有属性和方法的方式,需要的小伙伴可以参考一下
    2021-12-12
  • 简单时间提示DEMO从0开始一直进行计时

    简单时间提示DEMO从0开始一直进行计时

    点击按钮输入框会从0开始一直进行计时,具体的实现示例如下,感兴趣的朋友可以尝试操作下哦
    2013-11-11
  • js时间比较 js计算时间差的简单实现方法

    js时间比较 js计算时间差的简单实现方法

    下面小编就为大家带来一篇js时间比较 js计算时间差的简单实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08

最新评论