Estoy confundido al usar php para manejar la fecha / hora.
Lo que estoy tratando de hacer es esto: cuando un usuario visita mi página, le pregunto su zona horaria y luego visualizo el 'día de la semana' en su zona horaria.
No quiero usar el día del navegador. Quiero hacer este cálculo en php.
Así es como estoy tratando de lograrlo:
- La zona horaria ingresada por el usuario
- Sello de tiempo Unix calculado por la función php time ().
Pero no sé cómo proceder ... ¿Cómo puedo obtener el "día de la semana" en esta zona horaria?
date("N", $timestamp)
para obtener1..7
valores a partir del lunes. En las versiones anteriores, puede usar el truco(date("w", $timestamp) + 6) % 7
para obtener0..6
valores a partir del lunes.Mi solución es esta:
La salida es:
Tuesday
La salida es:
Tue
fuente
Creo que esta es la respuesta correcta, simplemente cambie
Europe/Stockholm
a la zona horaria de los usuarios.http://php.net/manual/en/function.date.php
Para obtener una lista de las zonas horarias admitidas, consulte http://php.net/manual/en/timezones.php
fuente
Muchas gracias chicos por sus rápidos comentarios.
Esto es lo que usaré ahora. Publicar la función aquí para que alguien pueda usarla.
Informe si encuentra alguna corrección.
fuente
Otra forma rápida:
fuente
Si puede obtener su compensación de zona horaria, puede agregarla a la marca de tiempo actual y luego usar la función gmdate para obtener su hora local.
fuente
Esto debería funcionar (no lo probé, entonces YMMV). Funciona almacenando la zona horaria actual de la secuencia de comandos, cambiándola a la especificada por el usuario, obteniendo el día de la semana de la
date()
función en la marca de tiempo especificada y luego configurando la zona horaria de la secuencia de comandos a la que tenía al principio.Sin embargo, es posible que tenga algunas aventuras con identificadores de zona horaria.
fuente
El "día de la semana" es algo que puede obtener directamente de la función php date () con el formato "l" o "N" respectivamente. Eche un vistazo al manual
editar: Lo siento, no leí las publicaciones de Kalium correctamente, ya lo explicó. Culpa mía.
fuente
La fecha de verificación es el lunes o domingo antes de obtener el último lunes o el último domingo
fuente
Basado en una de las otras soluciones con una bandera para cambiar entre semanas comenzando el domingo o el lunes
fuente
Las representaciones estándar basadas en letras de partes de fecha son excelentes, excepto por el hecho de que no son tan intuitivas. La forma mucho más conveniente es identificar abstracciones básicas y una serie de implementaciones específicas. Además, con este enfoque, puede beneficiarse del autocompletado.
Dado que aquí estamos hablando de citas, parece plausible que la abstracción básica sea
ISO8601DateTime
. Una de las implementaciones específicas es la fecha y hora actual, la que necesita cuando realiza una solicitud a su backend, por lo tanto,Now()
class. El segundo que es de alguna utilidad para usted es una fecha y hora ajustada a alguna zona horaria. No es sorprendente que se llameAdjustedAccordingToTimeZone
. Y finalmente, necesita un día de la semana en la zona horaria de una fecha y hora pasada: hay unaLocalDayOfWeek
clase para eso. Entonces el código se parece a lo siguiente:Para obtener más información sobre este enfoque, eche un vistazo aquí .
fuente
fuente