Почему я не могу просто отобразить дату (дату, месяц и год без времени)? - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть код, который делает почти все, что мне нужно.Он рассчитывает на 3 дня в будущем, исключая даты, а затем отображает мою "предполагаемую дату отправки"

Дата, однако, отображается в виде полной даты и времени, а не только даты.
День МесяцДата Год 12:02:57 GMT + 0100 (Британское летнее время)

Может кто-нибудь помочь с кодом ниже, так что он исключает местное время и отображает только будущую дату, исключая выходные,
ДД / ММ / ГГГГ
или в следующем формате;
Понедельник, 20 июня

Заранее спасибо!

function addDates(startDate,noOfDaysToAdd){
var count = 0;
while(count < noOfDaysToAdd){
endDate = new Date(startDate.setDate(startDate.getDate() + 1));
if(endDate.getDay() != 0 && endDate.getDay() != 6){
   //Date.getDay() gives weekday starting from 0(Sunday) to 6(Saturday)
   count++;
}
}
return startDate;
}
var today = new Date();
var daysToAdd = 3;
document.write ('Estimated Dispatch Date: ' + addDates(today,daysToAdd));

1 Ответ

0 голосов
/ 24 сентября 2018

Вы можете использовать метод 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)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...