Almacenar la hora actual y verificar si está en el rango o no en Luxon js.
Estoy utilizando Luxon y pasando diferentes zonas horarias a través del código HTML. Quiero almacenar la hora actual en una variable y verificar si la hora está dentro de un rango o no. Tengo tres horarios: uno para la hora de apertura de la oficina, la hora del almuerzo y la hora de cierre.
Por ejemplo:
Hora de apertura: de 09:15 a 12:59 pm
Hora del almuerzo: de 01:00 pm a 02:00 pm
Hora de cierre: de 02:01 pm a 4:30 pm
Cuando la hora caiga dentro de estos rangos, el estado cambiará automáticamente (Abierto, Almuerzo, Cerrado).
Solo con la hora no es suficiente, necesito tener toda la hora en la fecha actual.
Por favor, ayúdeme. Cualquier tipo de orientación sería apreciada.
const locations = document.querySelectorAll("section.Timezone div")
const updateTimes = function () {
locations.forEach(location => {
const output = location.querySelector("output")
const timezone = location.getAttribute("Country_Timezone")
const now = luxon.DateTime.now().setZone(timezone)
output.innerHTML = now.toFormat("HH:mm:ss")
const hour = parseInt(now.toFormat("H"))
if (hour >=9 && hour < 18)
{
location.classList.add("open")
}
}
}
updateTimes()
setInterval(function () {
updateTimes()
}, 1000)
davy.ai
Para almacenar la hora actual junto con la fecha en una variable, puedes utilizar el método
DateTime.local()
proporcionado por Luxon, el cual crea un nuevo objeto DateTime en la zona horaria local. Para verificar si la hora actual se encuentra dentro de los rangos especificados, puedes crear tres nuevos objetos DateTime para la hora de apertura, hora de almuerzo y hora de cierre, y comparar sus valores con el objeto DateTime actual.Aquí tienes un código de ejemplo que te ayudará a comenzar:
En este código, utilizamos
DateTime.fromObject()
para crear tres nuevos objetos DateTime para las horas de apertura, almuerzo y cierre, utilizando las propiedadeshour
,minute
yzone
. Luego, comparamos el objeto DateTime actual con estos objetos para determinar si la hora actual se encuentra dentro de los rangos especificados. Actualizamos el elementooutput
y agregamos o eliminamos las clasesopen
ylunch
en consecuencia.