格式和更改日期

Format and change date

我得到这样格式的日期:

18th February

添加周后,应该以相同的格式返回 示例:

input => 18th February + 7 weeks:

output => 31st March

我能够获取日期并添加周数,但我发现将日期格式化很复杂。

这是我现在拥有的:

let date = new Date(("18th February").replace(/st|rd|nd|th/g, ""))

let weeks = 7 * 7

let newDate = date.setDate(date.getDate() + weeks)

console.log(new Date(newDate))

//Output

2001-03-31T23:00:00.000Z

//Desire Output

//31st March

谢谢你的帮助。

我认为前端中的日期格式不是很好,所以库总是有帮助(比如 momentjs、datefnz 等)

但您可以将此添加到您的代码中以使其工作:

let date = new Date(("18th February").replace(/st|rd|nd|th/g, ""))

let weeks = 7 * 7

let newDate = new Date(date.setDate(date.getDate() + weeks))

let months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
let month = months[newDate.getMonth()]
let day = newDate.getDate()

function dayWithNth (d) {
  if (d > 3 && d < 21) return `${d}th`;
  switch (d % 10) {
    case 1:  return `${d}st`;
    case 2:  return `${d}nd`;
    case 3:  return `${d}rd`;
    default: return `${d}th`;
  }
}

console.log(`${dayWithNth(day)} ${month}`)