¿Cuál es la forma más fácil de obtener el desplazamiento UTC en PHP, en relación con la zona horaria actual (sistema)?Compensación UTC en PHP
Respuesta
date('Z');
devuelve el desplazamiento en segundos UTC.
$this_tz_str = date_default_timezone_get();
$this_tz = new DateTimeZone($this_tz_str);
$now = new DateTime("now", $this_tz);
$offset = $this_tz->getOffset($now);
no probado, pero debería funcionar
útil si usted está utilizando la clase DateTime en PHP 5. Pero no lo soy. –
date("Z")
devolverá el desplazamiento UTC relativo a la zona horaria del servidor, no a la zona horaria de la máquina del usuario. Para obtener la zona horaria de la máquina del usuario, puede usar la función javascript getTimezoneOffset()
que devuelve la diferencia horaria entre la hora UTC y la hora local, en minutos.
<script type="text/javascript">
d = new Date();
window.location.href = "page.php?offset=" + d.getTimezoneOffset();
</script>
Y en page.php
que mantiene su código PHP, puede hacer lo que quiera con ese valor de desplazamiento. O bien, en lugar de redirigir a otra página, puede enviar el valor de compensación a su script php a través de Ajax, de acuerdo con sus necesidades.
OP explícitamente preguntado * "relativo a la zona horaria actual (sistema)?" * – Madbreaks
OP pidió la solución PHP, no JS –
Hice una versión ligeramente modificada de lo que hizo Oscar.
date_default_timezone_set('America/New_York');
$utc_offset = date('Z')/3600;
Esto me dio la compensación de mi zona horaria, EST, a UTC, en horas.
El valor de $ utc_offset fue -4.
echo date ('P'); // salida voluntad algo 02: 00 o -04: 00
Esta es la misma función de JavaScript date.getTimezoneOffset()
:
<?php
echo round(date('Z')/-60,2);
?>
['date (' Z ') '] (http://php.net/manual/en/function.date.php) es el *« Offset de zona horaria en segundos. »* El signo menos debe permanecer ... Divide por' 60'. No por '-60' Luego, esto dará como resultado el desplazamiento de la zona horaria del servidor. OP quería (en 2008) comparar el desplazamiento del usuario local con este valor del que habla. –
@LouysPatriceBessette La función 'getTimezoneOffset()' en javascript da exactamente este valor (-180). –
Eso es cierto para [JavaScript getTimezoneOffset()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset) ... Y es en minutos en lugar de segundos. La fecha PHP no hace esta inversión de valor absoluto. –
- 1. PHP Tipo de compensación ilegal
- 2. obtener hora UTC en PHP
- 3. force php strtotime para usar UTC
- 4. iPhone CurrentTimeZoneOffset de UTC
- 5. PHP UTC a la hora local
- 6. php - Cómo soluciono este error de tipo de compensación ilegal
- 7. data Convertir UTC a la hora local en PHP
- 8. jQuery: Forma entradas de compensación
- 9. Obtención del desplazamiento UTC de la computadora en Python
- 10. date_default_timezone_set ('UTC') no funciona
- 11. ¿Fecha.today en UTC?
- 12. Desplazamiento UTC en minutos
- 13. GMT contra las fechas UTC
- 14. Compensación caché de página en ASP.NET
- 15. sesiones de compensación en mongodb, expressjs, nodejs
- 16. objetos de compensación de localStorage
- 17. Cálculos de Firebug y Compensación
- 18. Cálculo elemento de compensación para paginación
- 19. ¿PHP time() devuelve una marca de tiempo GMT/UTC?
- 20. Generando hora UTC en java
- 21. Convertir DateTime a UTC sólo si no está ya Utc
- 22. Convertir a UTC Timestamp
- 23. compensación de inclinación de brújula de iphone
- 24. conversión de pytz utc
- 25. ¿Desactivar completamente la compensación de exposición automática?
- 26. SqlLite con omisión (compensación) solamente (sin límite)
- 27. Almacenamiento de fechas y horas en UTC y conversión de la hora local en PHP/MySQL
- 28. Obtener compensación de zona horaria para una ubicación determinada
- 29. ¿Cómo verificar si una compensación de tiempo está en horario de verano?
- 30. ¿Qué significa "compensación" en el contexto de la programación?
Gracias. Desafortunadamente, PHP requiere que llame a date_default_timezone_set(). Si configura eso en GMT, las fechas de una base de datos seguirán estando en la hora local, pero la fecha ('Z') devolverá cero. Si lo configura en la zona horaria del servidor, también podría codificar el desplazamiento del servidor desde GMT en un archivo de inclusión. Es increíble que no hay una forma directa de hacer esto. EDIT: descubrí que puedes hacer date_default_timezone_set (date_default_timezone_get()). ¡Qué asqueroso! – Oscar
fecha ('Z') devuelve el desplazamiento GMT en segundos – Dahomz
que devuelve 0. – Adry