Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

247
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!