基于日期距离的字符串中的条件日期?

时间:2020-10-21 20:18:18

标签: javascript

进行搜索并没有带来太多成果。希望您能提供帮助!

我正在寻找这样的句子:

下一个星期一会议将从10月19日星期一[1]开始,持续7周,直到11月30日星期一[2]

其中[1]是下一个星期一的日期, 除非星期一是将来的4天或更短,在这种情况下,它将是下一个星期一。而且,[2]比[1]中提到的星期一晚了7周。

作为奖励,如果它在一周中的其他几天都有效,那就太棒了!

日期可以基于客户端浏览器。我希望完全在网站的客户端JS中实现此功能。

任何帮助或正确方向的指点?

1 个答案:

答案 0 :(得分:1)

let date = new Date();
let nextMonday = new Date();
let daysToNextMonday = new Date();

nextMonday.setDate(date.getDate() + (1 + 7 - date.getDay() % 7));
let diffTime = Math.abs(nextMonday - date);

daysToNextMonday = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); //full days, no fractions


if (daysToNextMonday <= 4) {
  nextMonday.setDate(nextMonday.getDate() + 7);
}

let sevenWeeksAfter = new Date(nextMonday);
sevenWeeksAfter.setDate(nextMonday.getDate() + 7 * 7);

const monthNextMonday = new Intl.DateTimeFormat('en', {
  month: 'long'
}).format(nextMonday);
const dayNextMonday = new Intl.DateTimeFormat('en', {
  day: '2-digit'
}).format(nextMonday);

const monthSevenWeeksAfter = new Intl.DateTimeFormat('en', {
  month: 'long'
}).format(sevenWeeksAfter);
const daySevenWeeksAfter = new Intl.DateTimeFormat('en', {
  day: '2-digit'
}).format(sevenWeeksAfter);

let text = `The next Monday session starts on Monday ${monthNextMonday} ${dayNextMonday}th and runs for 7 weeks until Monday ${monthSevenWeeksAfter} ${daySevenWeeksAfter}th`;

console.log(text);