Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

250
Vistas
Usar moment.js para verificar si la hora local está entre otras 2 zonas horarias

Se han hecho preguntas similares, pero por alguna razón no puedo entender esto. Quiero que un usuario de cualquier parte del mundo vea si una tienda está abierta o cerrada en mi sitio. El horario de la tienda es de lunes a viernes de 8 am a 8 pm y sábados y domingos de 8 am a 7 pm.

Básicamente, el código necesita tomar la hora local de los usuarios y compararla con la hora actual en CT, y ver si la tienda está abierta. Esto se complica un poco más por el hecho de que si son las 7 p.

En toda la búsqueda que hice, encontré fragmentos de preguntas/respuestas similares, pero no puedo entender cómo ponerlo todo junto para encontrar una solución. Empecé probando esto:

 var currTimeTokyo = moment.tz(moment(), 'Asia/Tokyo').format(); var currTimeCT = moment.tz(moment(), 'America/Chicago').format(); console.log(currTimeTokyo); console.log(currTimeCT);

y eso da:

 2021-10-30T00:51:42+09:00 2021-10-29T10:51:42-05:00

Esos son correctos, pero ahora, ¿cómo me comparo con el horario de apertura/cierre de hoy? Necesito verificar si la hora de Tokio está entre la apertura y el cierre en CT, pero las horas de apertura/cierre cambian según el día que sea, y Tokio podría ser un día diferente al de CT de todos modos. ¿Cómo explicarías todo eso?

ACTUALIZACIÓN: Encontré algo que funcionó y lo publiqué como respuesta.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No sé moment.js y creo que ya se anunció como obsoleto (day.js o luxon serían alternativas actuales), por lo que no puedo darle la sintaxis adecuada, pero trato de ayudar con la lógica.

  1. Como dijiste, toma la hora local actual del usuario
  2. conviértalo a CTtime en el que se encuentra la tienda. Y si es martes, entonces es martes y, según el horario de su tienda, está cerrado o abierto. No importa si la zona horaria desde la que está consultando ya puede haber cambiado el día.
  3. compare la hora local de la tienda con el horario de apertura: ¿qué día laborable es? ¿Es entre la apertura y el cierre?
about 4 years ago · Juan Pablo Isaza Denunciar

0

Investigué Luxon como sugirió Corrl y se me ocurrió esto, que creo que resuelve mi problema.

 // open hours are MF 8am-8pm, Sat-Sun 8am-7pm (all times CT) var hours = [ { day: 'Sunday', open:8, close:19 }, { day: 'Monday', open:8, close:20 }, { day: 'Tuesday', open:8, close:20 }, { day: 'Wednesday', open:8, close:20 }, { day: 'Thursday', open:8, close:20 }, { day: 'Friday', open:8, close:20 }, { day: 'Saturday', open:8, close:19 } ]; var isOpen = false; var local = luxon.DateTime.local(); // get current time in local tz var localInCT = local.setZone("America/Chicago"); // rezone to CT without changing timestamp; hours.forEach(function(item, index){ if (index === localInCT.weekday && localInCT.hour >= item.open && localInCT.hour < item.close) { isOpen = true; } }); console.log(isOpen);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda