2011-12-29 12 views
13

Código primeraComo llegar marca de tiempo Unix en php en la zona horaria

echo time() . '<br/>'; 
echo date('Y-m-d H:i:s') . '<br/>'; 
date_default_timezone_set('America/New_York'); 

echo time() . '<br/>'; 
print_r($timezones[$timezone] . '<br/>'); 
echo date('Y-m-d H:i:s') . '<br/>'; 

En el código anterior se imprime la fecha según la zona horaria, pero marca de tiempo Unix es igual incluso después de ajustar por defecto zona horaria

¿Cómo podemos imprime la marca de tiempo de Unix según la zona horaria?

Respuesta

27

La respuesta proporcionada por Volkerk es correcta, pero si realmente necesita una solución, mire mi ejemplo.

<?php 

//default timezone 
$date = new DateTime(null); 
echo 'Default timezone: '.$date->getTimestamp().'<br />'."\r\n"; 

//America/New_York 
$date = new DateTime(null, new DateTimeZone('America/New_York')); 
echo 'America/New_York: '.$date->getTimestamp().'<br />'."\r\n"; 

//Europe/Amsterdam 
$date = new DateTime(null, new DateTimeZone('Europe/Amsterdam')); 
echo 'Europe/Amsterdam: '.$date->getTimestamp().'<br />'."\r\n"; 

echo 'WORK AROUND<br />'."\r\n"; 
// WORK AROUND 
//default timezone 
$date = new DateTime(null); 
echo 'Default timezone: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n"; 

//America/New_York 
$date = new DateTime(null, new DateTimeZone('America/New_York')); 
echo 'America/New_York: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n"; 

//Europe/Amsterdam 
$date = new DateTime(null, new DateTimeZone('Europe/Amsterdam')); 
echo 'Europe/Amsterdam: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n"; 
?> 

Obtener la marca de tiempo regular y agregar el desplazamiento UTC

+1

Es posiblemente confuso usar una solución como esta ya que corre el riesgo de tener todo tipo de problemas con las zonas horarias frente a la marca de tiempo de Unix. Dado el OP especificado, un formato de salida sería mejor utilizar el método de formato de DateTime, es decir, $ date-> format ('Y-m-d H: i: s') – liquorvicar

+1

Estoy totalmente de acuerdo con usted, y no lo recomendaría. Almacenar como marca de tiempo de Unix sería mejor y al mostrar la conversión de datos para corregir la zona horaria. Si el usuario va a almacenar esta información en una base de datos, descartaría por completo el formato de marca de tiempo de unix y buscaría un tipo de base de datos de fecha y hora (debido a las diferentes funciones/fecha/hora que facilitarán su vida) –

+0

¿Es esto correcto? '$ Date = new DateTime (null, new DateTimeZone ('Filipinas')); '. Solo quiero obtener PH. – RoCk

18

https://en.wikipedia.org/wiki/Unix_time

tiempo Unix, o el tiempo de POSIX, es un sistema para la descripción de los instantes en el tiempo, que se define como el número de segundos transcurridos desde la medianoche Tiempo Universal Coordinado (UTC) de Jueves, 01 de enero 1970

La marca de tiempo de unix no se ve afectada por la configuración de la zona horaria. Configurar la zona horaria solo afecta la interpretación del valor de la marca de tiempo.

+1

Quiero la marca de tiempo del 'ahora' de acuerdo con la zona horaria, cualquier trabajo en torno a este – jimy

+0

tendría que almacenar la fecha y hora _AND_ el identificador de zona horaria . O almacena otra representación de fecha/hora que puede incluir o no la zona horaria, p. como ISO 8601 date – VolkerK

Cuestiones relacionadas