Si tengo una cita en una función, ¿cómo puedo saber si es un día de fin de semana?
javascript
date
leora
fuente
fuente
Respuestas:
var day = yourDateObject.getDay(); var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
fuente
d
! =day
:) Prefiero llamarlodayOfWeek
, tendría más sentido para OP.getDay
siempre debe devolver 0 para el domingo y 6 para el sábado, etc., según la configuración actual de la zona horaria. (Y luego depende del OP decidir qué constituye un "fin de semana" de acuerdo con sus requisitos).===
lugar de==
comparar valores absolutos. No es crucial, sino solo la mejor práctica.var isWeekend = yourDateObject.getDay()%6==0;
fuente
.getDay()
dará como resultado otro valor o si la definición deisWeekend
sería incorrecta. Si se trata de la variable, no me importa. Supongo que un 0 siempre será domingo, así que está bien para mí.Corto y dulce.
var isWeekend = ([0,6].indexOf(new Date().getDay()) != -1);
fuente
Probé la respuesta correcta y funcionó para ciertas configuraciones regionales pero no para todas:
En momentjs Docs: weekday El número devuelto depende de la configuración regional initialWeekDay, así que Monday = 0 | Domingo = 6
Entonces cambio la lógica para verificar el DayString real ('Domingo')
const weekday = momentObject.format('dddd'); // Monday ... Sunday const isWeekend = weekday === 'Sunday' || weekday === 'Saturday';
De esta forma, eres independiente de la configuración regional.
fuente
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).
Actualización 2020
Ahora hay varias formas de lograrlo.
1) Usando el
day
método para obtener los días de 0 a 6:const day = yourDateObject.day(); // or const day = yourDateObject.get('day'); const isWeekend = (day === 6 || day === 0); // 6 = Saturday, 0 = Sunday
2) Usando el
isoWeekday
método para obtener los días del 1 al 7:const day = yourDateObject.isoWeekday(); // or const day = yourDateObject.get('isoWeekday'); const isWeekend = (day === 6 || day === 7); // 6 = Saturday, 7 = Sunday
fuente
.isoWeekday()
es un método moment.js, pero no especificado.var d = new Date(); var n = d.getDay(); if( n == 6 ) console.log("Its weekend!!"); else console.log("Its not weekend");
fuente
He probado la mayoría de las respuestas aquí y siempre hay algún problema con la zona horaria, la configuración regional o cuando el comienzo de la semana es domingo o lunes.
A continuación es una que me parece es más seguro, ya que se basa en el nombre del día de la semana y en la en la configuración regional.
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;
fuente
En la versión actual, debe usar
var day = yourDateObject.day(); var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
fuente
Utilice el método .getDay () en el objeto Date para obtener el día.
Compruebe si es 6 (sábado) o 0 (domingo)
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);
fuente
Lo siguiente genera un booleano si un objeto de fecha es durante el horario de « apertura », excluyendo los días de fin de semana y excluyendo las horas nocturnas entre
23H00
y9H00
, teniendo en cuenta el desplazamiento de zona horaria del cliente.Por supuesto, esto no maneja casos especiales como vacaciones, pero no muy lejos;)
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?
Alternativamente, para obtener el día de la semana como una cadena humana local , podemos usar:
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) )
Tenga cuidado con los
new Intl.DateTimeFormat
bucles internos lentos, una matriz asociativa simple se ejecuta mucho más rápido:console.log( ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][new Date(Date.now()).getDay()] )
fuente
Simplemente agregue 1 antes del módulo
var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;
fuente