各种时间函数

这篇文章提供了一系列JavaScript函数,用于处理日期和时间。包括将时间戳转换为年-月-日时-分-秒格式,获取当前时间的前后几天,获取上个月的今天和上个月,获取某一天的前一天,获取去年的当天,生成日期区间,以及判断是否为过去日期。这些函数对前端开发和数据处理非常有用。
摘要由CSDN通过智能技术生成

1.时间戳转年-月-日 时-分-秒

  //获取当前时间  年-月-日 时-分-秒
  formatDate: (value) => {
    // 时间戳转换日期格式方法
    if (value == null) {
      return '';
    } else {
      let date = new Date(value);
      let y = date.getFullYear(); // 年
      let MM = date.getMonth() + 1; // 月
      MM = MM < 10 ? '0' + MM : MM;
      let d = date.getDate(); // 日
      d = d < 10 ? '0' + d : d;
      let h = date.getHours(); // 时
      h = h < 10 ? '0' + h : h;
      let m = date.getMinutes(); // 分
      m = m < 10 ? '0' + m : m;
      let s = date.getSeconds(); // 秒
      s = s < 10 ? '0' + s : s;
      return y + '-' + MM + '-' + d + ' ' + '00' + ':' + '00' + ':' + '00';
      // return y + '-' + MM + '-' + d ;
    }
  },
  //调用  
  formatDate(new Date(new Date().getFullYear(),new Date().getMonth(),
            new Date().getDate() - 1,0));

2.获取当前时间的前后几天

  //day:-1昨天
  getDay: (day) => {
    var today = new Date();

    var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;

    today.setTime(targetday_milliseconds); //注意,这行是关键代码

    var tYear = today.getFullYear();

    var tMonth = today.getMonth();

    var tDate = today.getDate();

    tMonth = doHandleMonth(tMonth + 1);

    tDate = doHandleMonth(tDate);

    return tYear + '-' + tMonth + '-' + tDate;
  },

function doHandleMonth(month) {
  var m = month;

  if (month.toString().length == 1) {
    m = '0' + month;
  }

  return m;
}

3.获取上个月的今天

//获取上个月的今天
  getPreDay: () => {
    var date = new Date(); // 获取当前的时间对象
    var year = date.getFullYear();
    var month = date.getMonth();
    var day = date.getDate(); // 获取到当前天
    // 上个月
    var preYear = year;
    var preMon = parseInt(month);
    // 如果preMon等于0,让年份减去1,月份等于12
    if (preMon === 0) {
      preYear = parseInt(preYear) - 1;
      preMon = 12;
    }
    var preDay = day;
    var preDays = new Date(preYear, preMon, 0); // 获取到一个月的所有天数
    if (preDay > preDays) {
      preDay = preDays;
    }
    if (preMon < 10) {
      preMon = '0' + preMon;
    }
    if (preDay < 0) {
      preDay = '0' + preDay;
    }

    var pre = preYear + '-' + preMon + '-' + preDay;
    return pre;
  },

4.获取上个月

getPreMonth() {
    var arr = getNowMonth().split('-');
    var year = arr[0]; //获取当前日期的年份
    var month = arr[1]; //获取当前日期的月份

    var year2 = year;
    var month2 = parseInt(month) - 1;
    if (month2 == 0) {
      //1月的上一月是前一年的12月
      year2 = parseInt(year2) - 1;
      month2 = 12;
    }

    if (month2 < 10) {
      //10月之前都需要补0
      month2 = '0' + month2;
    }
    var preMonth = year2 + '-' + month2;
    return preMonth;
  },

5.获取某一天的前一天

//获取某个日期的前一天
  // date 代表指定的日期,格式:2018-09-27
  // day 传-1表始前一天,传1表始后一天
  // JS获取指定日期的前一天,后一天
  getNextDate: (date, day) => {
    var dd = new Date(date);
    dd.setDate(dd.getDate() + day);
    var y = dd.getFullYear();
    var m =
      dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1;
    var d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate();
    return y + '-' + m + '-' + d;
  },

6.去年的当天

  //去年的当天
  getLastYear: (yearNum = 1) => {
    let today = new Date(); //当天
    today.setFullYear(today.getFullYear() - yearNum);
    return today;
  },

7.生成日期区间

generateDates(startDateString, endDateString) {
  // startDateString=2023-09-10, endDateString=2023-09-19
  var startDate = new Date(startDateString); // 将起始日期字符串转换为Date对象
  var endDate = new Date(endDateString); // 将结束日期字符串转换为Date对象

  if (startDate > endDate) {
    return '起始日期不能大于结束日期';
  } else {
    var datesArray = []; // 存放生成的日期数组

    while (startDate <= endDate) {
      var dateStr = startDate.toISOString().slice(0, 10); // 格式化日期字符串(YYYY/MM/DD)

      datesArray.push(dateStr); // 添加到数组中

      startDate.setDate(startDate.getDate() + 1); // 递增日期
    }

    return datesArray;
  }
}

8.获取当前月的第一天和最后一天

//获取当前月的第一天后最后一天
 getfirstDateAndlastDate(dateStr) {
  // var dateStr = "2021-02-16 09:36:39";
  var date = '';
  if (dateStr) {
    date = new Date(dateStr);
  } else {
    date = new Date();
  }

  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  if (month > 12) {
    month = 1;
    year++;
  }
  if (month < 10) {
    month = '0' + month;
  }
  var monthLastDay = new Date(year, month, 0).getDate();
  var firstDate = year + '-' + month + '-' + '01';
  var lastDate = year + '-' + month + '-' + monthLastDay;
  return [firstDate, lastDate];
}

9.判断是否为过去日期 dateString=2019-05-30

isPastDate(dateString) {
  var currentDated = moment().format('YYYY-MM-DD');
  var currentDate = new Date(); // 获取当前时间
  var inputDate = new Date(dateString); // 将输入的日期字符串转换成Date对象
  if (inputDate < currentDate) {
    if (currentDated === dateString) {
      return false;
    }
    return true; // 如果输入的日期小于当前日期,则表示该日期已经过去了
  } else {
    return false; // 否则表示该日期还未到达或者正在进行中
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值