Marca de tiempo entre Javascript y PHP

2 minutos de lectura

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

  • Nota: dividir una marca de tiempo por 1000 en javascript producirá un flotante. Para obtener un número entero ~~(Date.now()/1000)

    – GrantD71

    10 de noviembre de 2016 a las 19:11


  • Probablemente puedas usar parseInt(Date.now() / 1000)

    – Roman Kozin

    27 de noviembre de 2018 a las 11:34

  • Se ha recomendado en otras respuestas usar Math.floor(datevar.getTime()/1000)

    – Jefe Mago Locke

    23 de marzo a las 21:54


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.

  • Gracias. Tengo la zona horaria UTC en PHP y la zona horaria china en el cliente. ¿Cómo debo modificar javascript?

    – indapublic

    24 de marzo de 2013 a las 0:59

  • @indapublic, debe convertir la hora de su cliente a UTC, posiblemente también podría preguntarle al servidor qué hora cree que es y usar eso para determinar qué tan mal está su cliente

    – Jefe Mago Locke

    23 de marzo a las 21:58

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)

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad