Js查询月份的开始和结束日期(附Ts转换代码)

发布时间 2023-05-24 16:41:41作者: 君乐豹

月份开始和结束
整体不是很复杂,使用new Date()方法自带获取最后一天的时间

new Date(a,b,c),传递参数

参数a:是要获取的年份
参数b:是要获取的月份
参数c:是要获取的日期

传递日期为0时获取的传递月份的上月最后一天
时间月份是从0开始算起11结束,所以每次获取月份要加一;也就是当你传递的五月也就是六月,获取开始日期就要减一才能拿到对照日期

例如:

let date = new Date(2022,5,0);
console.log(data.getFullYear() + "-" +(data.getMonth()+1)+ "-" +data.getDate());//2022-4-30
// 查询月份开始结束
//开始日期
function getFirstDayOfMonth(year, month) {
  // return new Date(year, month-1, 1);
  let data = new Date(year, month - 1, 1);
  return (
    data.getFullYear() +
    "-" +
    (data.getMonth() + 1 > 9
      ? data.getMonth() + 1
      : "0" + (data.getMonth() + 1)) +
    "-" +
    (data.getDate() > 9 ? data.getDate() : "0" + data.getDate())
  );
}
//结束日期
function getLastDayOfMonth(year, month) {
  let data = new Date(year, month, 0);
  return (
    data.getFullYear() +
    "-" +
    (data.getMonth() + 1 > 9
      ? data.getMonth() + 1
      : "0" + (data.getMonth() + 1)) +
    "-" +
    (data.getDate() > 9 ? data.getDate() : "0" + data.getDate())
  );
}

function test1(){ 
    //示例
   println('2018年5月:' + getFirstDayOfMonth(2018,5) + ',' + getLastDayOfMonth(2018,5));
}

PS:以上范文参考原文:https://blog.csdn.net/weixin_61079989/article/details/125946311  未亲测,但逻辑颇正。

以下记录另外一种写法(亲测):

由于最近在写Ts的项目,所以将另外一种方法以及Ts代码附上,留作备份:

Js代码:

//获取时间  传入范例:2023-05
  getDateTime(e) {
    let timeArr = e..split('-')
    let year = parseInt(timeArr[0])
    let month = parseInt(timeArr[1])
    this.setData({
      showTime: `${year}年${month}月`
    })
    let date = new Date(year, month, 0);
    //月份减1
    let start_time = new Date(year, month - 1, 1).valueOf() / 1000;
    let end_time = new Date(year, month - 1, date.getDate()).valueOf() / 1000 + 24 * 60 * 60;
    this.setData({
      start_time,
      end_time
    })
  }

这里返回的是开始时间戳以及结束时间戳

以下是Ts范例(返回的是两个日期,月份第一天、最后一天):

传入范例:2023-05
const getMonthToDateRange = (yearMonth: any) => {
  const timeArr = yearMonth.split('-');
  const year = parseInt(timeArr[0], 10);
  const month = parseInt(timeArr[1], 10);
  const date = new Date(year, month, 0);
  // 月份减1
  // eslint-disable-next-line camelcase
  const start_time = new Date(year, month - 1, 1).valueOf() / 1000;
  // eslint-disable-next-line camelcase
  const end_time =
    new Date(year, month - 1, date.getDate()).valueOf() / 1000 +
    24 * 60 * 60 -
    86400;

  // eslint-disable-next-line camelcase
  const startTimeN = new Date(start_time * 1000);
  // eslint-disable-next-line camelcase
  const endTimeN = new Date(end_time * 1000);
  const startDate = `${startTimeN.getFullYear()}-${
    startTimeN.getMonth() + 1
  }-${startTimeN.getDate()}`;
  const endDate = `${endTimeN.getFullYear()}-${
    endTimeN.getMonth() + 1
  }-${endTimeN.getDate()}`;
  // eslint-disable-next-line camelcase
  return [startDate, endDate];
};