如何在JavaScript中将日期转换为下个月的第一天?

时间:2020-08-08 07:18:52

标签: javascript html

我有一个HTML文件,它具有一个用于输入日期的字段,并且该html文件正在与JavaScript文件进行交互。

因此,我想做的就是输入输入的日期后立即将其转换为下个月的第一个日期。

例如:如果我提供的日期输入为21/05/2020(dd / mm / yyyy格式),则应将其转换为01/06/2020(dd / mm / yyyy格式),即第一个日期下个月。

有人可以帮助JavaScript逻辑吗?

3 个答案:

答案 0 :(得分:2)

只需将月份增加1,并将日期设置为1:

document.getElementById('demo').addEventListener('blur', function({target}) {
    const { value } = target;
    const d = new Date(value);
    d.setMonth(d.getMonth() + 1)
    d.setDate(1);   
    const date = d.toLocaleDateString('en-US', {
        year: 'numeric',
        month: "2-digit",
        day: "2-digit"
    });
    console.log(date)
    const [month, day, year] = date.split('/');
    target.value = [year, month, day].join('-');
});
<input type="date" id="demo"/>

答案 1 :(得分:0)

使用时刻库​​

moment('21/05/2020', "dd/mm/yyyy").add(1, 'M').startOf("month")

答案 2 :(得分:0)

下面是普通的JS实现。

const d = new Date("05/21/2020")

const firstDayOfNextMonth = (str) => {
  const d = new Date(str)
  const month = d.getMonth()

  d.setMonth(month + 1)
  d.setDate(1)

  const resDate = String(d.getMonth() + 1).padStart(2, "0")
  const resMonth = String(d.getDate()).padStart(2, "0")
  const resYear = d.getFullYear()
  return `${resMonth}/${resDate}/${resYear}`
}

console.log(firstDayOfNextMonth("05/21/2020"))
console.log(firstDayOfNextMonth("12/21/2020"))