Quiero tener un sitio web con diferentes interfaces de usuario en función de si es de día o de noche en la zona horaria del cliente. ahora mismo tengo este código basado en lo que encontré en internet:
const hours = new Date().getHours() const isDayTime = hours > 6 && hours < 20 if (isDayTime === True){ //do this... }pero el problema es que el amanecer y el atardecer son diferentes en cada zona horaria, también cambia a través de las estaciones, por lo que considerar de 6 a 20 como mis horas diurnas es incorrecto (ya que podría ser de noche antes de las 20 en invierno).
¿Hay alguna manera de obtener el horario diurno o nocturno según la zona horaria del cliente?
Una pregunta particularmente interesante con una respuesta más compleja de lo que creo que puede haber anticipado.
En primer lugar, me temo que también ha olvidado tener en cuenta que las zonas horarias por sí solas no proporcionan suficiente información para calcular el día o la noche. También debe hacer una referencia cruzada de eso con una referencia de latitud porque la duración del día y la noche varía a lo largo de eso.
Una pista útil, de otra respuesta en Stack Overflow con credenciales similares: https://stackoverflow.com/a/15044683/60318
El Observatorio Naval de los Estados Unidos proporciona una descripción concisa de un algoritmo para calcular el amanecer y el atardecer, disponible aquí:
http://edwilliams.org/sunrise_sunset_algorithm.htm
Además de proporcionar la fecha y la ubicación, también debe seleccionar un ángulo cenital (en el que se considerará que el sol "salió" o "se puso"). La página vinculada tiene varias opciones.
Esto aún tendría que integrarse en una función, pero tal vez si eres inteligente buscando lo esencial en github, podrías encontrar algo útil.
Hay una calculadora de amanecer/atardecer que se encuentra aquí: https://gml.noaa.gov/grad/solcalc/sunrise.html
Puede hacerse una idea de la referencia cruzada de la ubicación del usuario con las zonas horarias, y creo que tendrá una solución más completa.