Для данного дня в месяце (например, 22 ноября 2022 г.) я хочу иметь возможность узнать, какое число соответствует этому конкретному дню недели в этом месяце. Итак, учитывая день 22 ноября 2022 года, мне нужно вернуть «4-й вторник».
В идеале я хотел бы сделать это с помощью javascript Date или Luxon, если это возможно, но мои поиски до сих пор не дали ответа, и логика для определения этого просто ускользает от меня.
Спасибо!
Это действительно несколько вопросов в одном.
Вы можете получить название дня недели из toLocaleString с подходящими опциями.
N-й случай определенного дня недели, учитывая дату, находится путем деления на 7 и округления.
Порядковый номер можно добавить, используя любой из ответов на вопрос Добавить суффикс st, nd, rd и th (порядковый) к числу.
Например.
function nthDate(date = new Date()) {
let dayname = date.toLocaleString('en', {weekday: 'long'});
let nth = Math.ceil(date.getDate() / 7);
nth += ["st", "nd", "rd"][((nth + 90) % 100 - 10) % 10 - 1] || "th";
return `${nth} ${dayname}`;
}
let d = new Date();
console.info(`Today is the ${nthDate(d)} of ${d.toLocaleString('en',{month:'long', year:'numeric'})}.`);