Si tengo una cita en una función, ¿cómo puedo saber si es un día de fin de semana?
Si tengo una cita en una función, ¿cómo puedo saber si es un día de fin de semana?
Respuestas:
var day = yourDateObject.getDay();
var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
d! = day:) Prefiero llamarlo dayOfWeek, tendría más sentido para OP.
getDaysiempre 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;
.getDay()dará como resultado otro valor o si la definición de isWeekendserí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);
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.
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 daymé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 isoWeekdaymé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
.isoWeekday()es un método moment.js, pero no especificado.
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;
En la versión actual, debe usar
var day = yourDateObject.day();
var isWeekend = (day === 6) || (day === 0); // 6 = Saturday, 0 = Sunday
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);
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 23H00y 9H00, 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.DateTimeFormatbucles 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()]
)
Simplemente agregue 1 antes del módulo
var isWeekend = (yourDateObject.getDay() + 1) % 7 == 0;