js-获取(昨天、今天、本周、上周、本月、上月)时间工具

本文提供了一套实用的JavaScript函数,用于快速获取昨天、今天、本周、上周、本月及上月的具体时间范围,涵盖从开始到结束的精确时间点,为时间戳处理和日期计算提供了便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js获取(昨天、今天、本周、上周、本月、上月)简单的时间工具

/**
 * 日期范围工具类
 */
export function startTime(time) {
  const nowTimeDate = new Date(time)
  return nowTimeDate.setHours(0, 0, 0, 0)
}

export function endTime(time) {
  const nowTimeDate = new Date(time)
  return nowTimeDate.setHours(23, 59, 59, 999)
}

/***
 * 当前时间
 */
export function getCurrentDate() {
  return new Date();
}

/***
 * 今天的开始时间
 */
export function getBeginToday() {
  return new Date(new Date(new Date().toLocaleDateString()).getTime());
}

/***
 * 昨天开始时间
 */
export function getBeginYesterday() {
  return startTime(getBeginToday() - 24 * 60 * 60 * 1000);
}


/***
 * 昨天结束时间时间
 */
export function getEndYesterday() {
  return endTime(getBeginToday() - 24 * 60 * 60 * 1000);
}
/***
 * 本周的第一天时间
 */
export function getBeginWeek() {
  var currentDate = getCurrentDate();
  var week = currentDate.getDay();

  //一天的毫秒数
  var millisecond = 1000 * 60 * 60 * 24;
  //减去的天数
  var minusDay = week != 0 ? week - 1 : 6;
  //本周 周一
  var monday = new Date(currentDate.getTime() - (minusDay * millisecond));
  return startTime(monday);
}

/***
 * 本周的最后一天时间
 */
export function getEndWeek() {
  var currentDate = getCurrentDate();
  var week = currentDate.getDay();
  //一天的毫秒数
  var millisecond = 1000 * 60 * 60 * 24;
  //减去的天数
  var minusDay = week != 0 ? week - 1 : 6;
  //本周 周日
  var monday = new Date(currentDate.getTime() - (minusDay * millisecond));
  var sunday = new Date(monday.getTime() + (6 * millisecond));
  //返回
  return endTime(sunday);
}

/***
 * 上周的开始
 */
export function getBeginLastWeek() {
  var currentDate = getCurrentDate();
  var first = currentDate.getDate() - currentDate.getDay() - 6;
  var startDate = new Date(currentDate.setDate(first));
  return startTime(startDate);
}

/***
 * 上周的结束
 */
export function getEndLastWeek() {
  var currentDate = getCurrentDate();
  var first = currentDate.getDate() - currentDate.getDay() - 6;
  var last = first + 6;
  var endDate = new Date(currentDate.setDate(last));
  return endTime(endDate);
}

/***
 * 本月的第一天时间
 */
export function getBeginMonth() {
  var currentDate = getCurrentDate();
  var currentMonth = currentDate.getMonth();
  //获得当前年份4位年
  var currentYear = currentDate.getFullYear();
  //求出本月第一天
  var firstDay = new Date(currentYear, currentMonth, 1);

  return firstDay;
};

/***
 * 本月的最后一天时间
 */
export function getEndMonth() {
  //获取当前时间
  var currentDate = getCurrentDate();
  var fullYear = currentDate.getFullYear();
  var month = currentDate.getMonth() + 1; // getMonth 方法返回 0-11,代表1-12月
  var endOfMonth = new Date(fullYear, month, 0);
  return endTime(endOfMonth);
};

/***
 * 上月的第一天时间
 */
export function getBeginLastMonth() {
  //获取当前时间
  var currentDate = getCurrentDate();
  //获得当前月份0-11
  var currentMonth = currentDate.getMonth();
  //获得当前年份4位年
  var currentYear = currentDate.getFullYear();
  //获得上一个月的第一天
  var priorMonthFirstDay = getPriorMonthFirstDay(currentYear, currentMonth);
  return priorMonthFirstDay;
};

/***
 * 上月的最后一天时间
 */
export function getEndLastMonth() {
  //获取当前时间
  var currentDate = getCurrentDate();
  //获得当前月份0-11
  var currentMonth = currentDate.getMonth();
  //获得当前年份4位年
  var currentYear = currentDate.getFullYear();

  //当为12月的时候年份需要加1
  //月份需要更新为0 也就是下一年的第一个月
  if (currentMonth == 11) {
    currentYear++;
    currentMonth = 0; //就为
  } else {
    //否则只是月份增加,以便求的下一月的第一天
    currentMonth++;
  }

  //一天的毫秒数
  var millisecond = 1000 * 60 * 60 * 24;
  //求出上月的最后一天
  var lastDay = new Date(getBeginMonth().getTime() - millisecond);

  return endTime(lastDay);
};

/**
 * 返回上一个月的第一天Date类型
 * @param year 年
 * @param month 月
 **/
export function getPriorMonthFirstDay(year, month) {
  //年份为0代表,是本年的第一月,所以不能减
  if (month == 0) {
    month = 11; //月份为上年的最后月份
    year--; //年份减1
    return new Date(year, month, 1);
  }
  //否则,只减去月份
  month--;
  return new Date(year, month, 1);;
};

结果显示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值