JavaScript:
Tengo una celda de objeto con algo de fecha.
params.date = cell.getDate();
params.timestamp = cell.getDate().getTime() / 1000;
console.log(params);
Objeto {fecha: jueves 09 de mayo de 2013 00:00:00 GMT+0800 (hora estándar de China), marca de tiempo: 1368028800}
Luego trato de verificar la marca de tiempo en PHP
$date="1368028800";
echo date('Y-m-d', $date);
2013-05-08
Diferencia en un día. ¿Por qué?
Cuando obtiene la marca de tiempo del objeto de fecha de Javacript:
su salida será en términos de milisegundos
<script>
var d = new Date();
alert(d.getTime());
</script>
salida: 1386746353000
Donde como marca de tiempo del objeto de fecha php en términos de segundos
<?php
$date = new DateTime();
echo $current_timestamp = $date->getTimestamp();
?>
salida: 1386746353
Entonces, cuando vaya a usar la marca de tiempo del objeto de fecha javascript con el objeto de fecha php, debe dividir la marca de tiempo de javascript por 1000 y usarla en php
params.date = cell.getDate();
Devuelve la FECHA no la HORA.
params.timestamp = cell.getDate().getTime() / 1000;
está convirtiendo la fecha en una fecha + hora, sin leer la hora actual.
Pero incluso si obtiene la marca de tiempo en javascript, la salida de la función de fecha de PHP dependerá de la zona horaria en la que se encuentre.
La marca de tiempo UNIX 1368028800 corresponde a la fecha del miércoles 08 de mayo de 2013 a las 16:00:00 GMT. En su ejemplo, está en la hora estándar de China (GMT + 8), por lo que Javascript muestra la fecha y hora para esta zona horaria (8 horas más tarde -> 09 de mayo)