если у меня есть дата, входящая в функцию, как я могу определить, что это выходной день?
javascript
date
Леора
источник
источник
Ответы:
var day = yourDateObject.getDay(); var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
источник
d
! =day
:) Я бы лучше назвал этоdayOfWeek
, было бы больше смысла OP.getDay
всегда должен возвращать 0 для воскресенья и 6 для субботы и т. д. в соответствии с текущими настройками часового пояса. (А затем ОП решает, что===
а не==
при сравнении абсолютных значений. Не критично, но просто передовой опыт.var isWeekend = yourDateObject.getDay()%6==0;
источник
.getDay()
приведет ли это к другому значению или определениеisWeekend
будет неправильным. Если дело в переменной, мне все равно. Я думаю, что 0 всегда будет воскресенье, так что для меня это нормально.Коротко и мило.
var isWeekend = ([0,6].indexOf(new Date().getDay()) != -1);
источник
Я попробовал правильный ответ, и он работал для определенных регионов, но не для всех:
В документах momentjs: будний день Возвращаемое число зависит от локали initialWeekDay, поэтому Monday = 0 | Воскресенье = 6
Поэтому я изменяю логику, чтобы проверить фактическое значение DayString ('Sunday')
const weekday = momentObject.format('dddd'); // Monday ... Sunday const isWeekend = weekday === 'Sunday' || weekday === 'Saturday';
Таким образом, вы не зависят от локали.
источник
Some countries have adopted a one-day weekend, i.e. either Sunday only (in seven countries), Friday only (in Djibouti, Iran, Palestine and Somalia), or Saturday only (in Nepal).
Обновление 2020
Сейчас есть несколько способов добиться этого.
1) Используя
day
метод, чтобы получить дни от 0 до 6:const day = yourDateObject.day(); // or const day = yourDateObject.get('day'); const isWeekend = (day === 6 || day === 0); // 6 = Saturday, 0 = Sunday
2) Используя
isoWeekday
метод, чтобы получить дни с 1 по 7:const day = yourDateObject.isoWeekday(); // or const day = yourDateObject.get('isoWeekday'); const isWeekend = (day === 6 || day === 7); // 6 = Saturday, 7 = Sunday
источник
.isoWeekday()
это метод moment.js, но не указан.var d = new Date(); var n = d.getDay(); if( n == 6 ) console.log("Its weekend!!"); else console.log("Its not weekend");
источник
Я проверил большинство ответов здесь, и всегда есть проблема с часовым поясом, локалью или тем, когда начало недели - воскресенье или понедельник.
Ниже приведен вариант, который я считаю более безопасным, поскольку он основан на названии дня недели и локали en .
let startDate = start.clone(), endDate = end.clone(); let days = 0; do { const weekday = startDate.locale('en').format('dddd'); // Monday ... Sunday if (weekday !== 'Sunday' && weekday !== 'Saturday') days++; } while (startDate.add(1, 'days').diff(endDate) <= 0); return days;
источник
В текущей версии вы должны использовать
var day = yourDateObject.day(); var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
источник
Используйте метод .getDay () для объекта Date, чтобы получить день.
Проверьте, 6 (суббота) или 0 (воскресенье)
var givenDate = new Date('2020-07-11'); var day = givenDate.getDay(); var isWeekend = (day === 6) || (day === 0) ? 'It's weekend': 'It's working day'; console.log(isWeekend);
источник
Следующее выводит логическое значение, находится ли объект даты в часы « открытия », исключая выходные дни и исключая ночные часы между
23H00
и9H00
, с учетом смещения часового пояса клиента.Конечно, это не касается особых случаев, таких как праздники, но не далеко;)
let t = new Date(Date.now()) // Example Date object let zoneshift = t.getTimezoneOffset() / 60 let isopen = ([0,6].indexOf(t.getUTCDay()) === -1) && (23 + zoneshift < t.getUTCHours() === t.getUTCHours() < 9 + zoneshift) // Are we open? console.log(isopen)
<b>We are open all days between 9am and 11pm.<br> Closing the weekend.</b><br><hr> Are we open now?
В качестве альтернативы, чтобы получить день недели как строку Human , мы можем использовать:
let t = new Date(Date.now()) // Example Date object console.log( new Intl.DateTimeFormat('en-US', { weekday: 'long'}).format(t) , new Intl.DateTimeFormat('fr-FR', { weekday: 'long'}).format(t) , new Intl.DateTimeFormat('ru-RU', { weekday: 'long'}).format(t) )
Остерегайтесь
new Intl.DateTimeFormat
медленных внутри циклов, простой ассоциативный массив работает намного быстрее:console.log( ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(Date.now()).getDay()] )
источник
Просто добавьте 1 перед модулем
var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;
источник