Вы можете использовать метод toDateString
для отображения только части даты вашего Date
объекта, но вам потребуется использовать несколько других методов для полного контроля над форматом вашей строки даты...
Вы можете отображать только часть даты, месяца и года вашей локальной даты и времени с помощью нескольких дополнительных строк кода, используя getDate
, getMonth
и getFullYear
методы, помогающие с форматированием.Вы можете попробовать передать определенные параметры форматирования в toLocaleString
, но это может отображать разные результаты в разных браузерах.Например, приведенный ниже код выводит дату в формате дд / мм / гггг в Chrome, но этот вывод не гарантируется во всех браузерах.
new Date().toLocaleString('en-GB', {year: 'numeric', month: 'numeric', day: 'numeric'})
Не уверен, что я следую тому, как вы хотите обрабатывать даты выходных,поэтому нижеприведенное форматирование даты обрабатывается, как вам нужно, в функции formatDate
отдельно от функции addDays
, где она просто обрабатывает даты выходных, перенося дату вперед на понедельник, если первоначально рассчитанная дата попадает в субботу или воскресенье.
// format input date to dd/mm/yyyy
const formatDate = (date) => {
let d = date.getDate(); // day of the month
let m = date.getMonth(); // month index from 0 (Jan) to 11 (Dec)
let yyyy = date.getFullYear(); // 4 digit year
let dd = (d < 10 ? '0' : '') + d; // format date to 2 digit
let mm = (m + 1 < 10 ? '0' : '') + (m + 1); // convert index to month and format 2 digit
return dd + '/' + mm + '/' + yyyy;
}
// add input days to today and adjust for weekend output
const addDays = (today, days) => {
let now = today.getTime() // now in UTC milliseconds
let ms = 24 * 60 * 60000; // milliseconds in one day
let date = new Date(now + days * ms); // today plus input days
let day = date.getDay(); // weekday index from 0 (Sun) to 6 (Sat)
// adjust weekend results to next weekday
if (day === 0 || day === 6) {
let adj = day === 0 ? 1 : 2;
date = new Date(now + (days + adj) * ms);
}
return date;
}
document.write('Estimated Dispatch Date: ' + formatDate(addDays(new Date(), 3)));