日期处理函数工具封装(持续更新中……)

927 阅读2分钟

日期处理函数工具封装

判断润年

/**
 * 判断润年
 * @param {string} year 年份
 * @return {Boolean} 
 */

export const isLeap = function (year) {
  if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) {
    return true
  }
  return false
};

获取星期

/**
 * 获取星期
 * @param {string} date 日期
 * @return {string} 星期
 */
export const getWeek = function (date) {
  let Stamp = new Date(date)
  // return weeks[Stamp.getDay()];
  let weeks = ['日','一','二','三','四','五','六'];
  return weeks[Stamp.getDay()];
};

获取月份天数

/**
 * 获取月份天数
 * @param {string} year  年份
 * @param {string} month 月份
 * @return {number} 月份天数
 */
export const getMonthDays = function (year, month) {
  month = parseInt(month) - 1
  if (month < 0 || month > 11) return ''
  let months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  if (this.isLeap(year)) {
    months[1] = 29
  }
  return months[month]
};

数字补零

用于格式化日期

/**
 * 数字补零
 * @param {string} str
 * @return {string}
 */
export const zero = function (str) {
  str = parseInt(str)
  return str > 9 ? str : '0' + str
};

获取今天日期

/**
 * 获取今天日期
 * @param {string} str  日期格式
 * @return {string} 格式化日期
 */
export const getToday = function (str) {
  const date = new Date();
  const year = date.getFullYear(),
        month = zero(date.getMonth() + 1),
        day = zero(date.getDate()),
        hour = zero(date.getHours()),
        minute = zero(date.getMinutes()),
        second = zero(date.getSeconds());
  let res = '';
  switch (str){
    case "yyyy-mm-dd":
      res = year + '-' + month + '-' + day;
      break;
    case "mm-dd-yyyy":
      res = month + '-' + day + '-' + year;
      break;
    case "yyyy-mm-dd hh:MM:ss":
      res = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
      break;
    case "hh:MM:ss":
      res = hour + ':' + minute + ':' + second;
      break;
    case "yyyy":
      res = year;
      break;
    case "mm-dd":
      res = month + '-' + day;
      break;
    default:
      res = '参数错误';
      break;
  }
  return res;
}

获取上一天日期

/**
 * 获取上一天日期
 * @param {string} str  当前日期
 * @return {string} 上一天日期
 */
export const getYesterday = function (str) {
  let date = str.split('-');
  let year = parseInt(date[0]),
    month = parseInt(date[1]),
    day = parseInt(date[2]);
  if(month > 12 || month < 1 || day > getMonthDays(year,month)) return '日期不合法';
  day -= 1;
  if(day > 0){
    return year + '-' + zero(month) + '-' + zero(day);
  }
  month -= 1;
  if(month > 0){
    return year + '-' + zero(month) + '-' + getMonthDays(year,month);
  }
  year -= 1;
  return year + '-' + 12 + '-' + getMonthDays(year,12);
};

获取下一天日期

/**
 * 获取下一天日期
 * @param {string} str  当前日期
 * @return {string} 下一天日期
 */
export const getTomorrow = function (str){
  let date = str.split('-');
  let year = parseInt(date[0]),
    month = parseInt(date[1]),
    day = parseInt(date[2]);
  if(month > 12 || month < 1 || day > getMonthDays(year,month)) return '日期不合法';
  day += 1;
  if(day <= getMonthDays(year,month)){
    return year + '-' + zero(month) + '-' + zero(day);
  }
  month += 1;
  if(month < 13){
    return year + '-' + zero(month) + '-' + '01';
  }
  year += 1;
  return year + '-' + '01' + '-' + '01';
}

todo

获取当前周数

补充

还有什么需要补充的可以在评论中告诉我。