buenos - Desplazamiento UTC en PHP
set timezone php (6)
¿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)?
$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
date(''Z'');
devuelve el desplazamiento UTC en segundos.
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 utilizar 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 contiene su código php, puede hacer lo que quiera con ese valor de compensación. 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.
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 el desplazamiento de mi zona horaria, EST, a UTC, en horas.
El valor de $ utc_offset fue -4.
fecha de eco (''P''); // generará algo +02: 00 o -04: 00
Esta es la misma función de date.getTimezoneOffset()
JavaScript:
<?php
echo round(date(''Z'')/-60,2);
?>