2013-03-24 6 views
13

Javascript:timestamp tra JavaScript e PHP

ho cella oggetto con qualcosa di data

params.date = cell.getDate(); 
params.timestamp = cell.getDate().getTime()/1000; 
console.log(params); 

oggetto {Data: Giovedì 9 maggio 2013 00:00:00 GMT + 0800 (China Standard Time) , timestamp: 1368028800}

poi cerco di controllare timestamp in PHP

$date = '1368028800'; 
echo date('Y-m-d', $date); 

2013-05-08

Differenza in un giorno. Perché?

risposta

5
params.date = cell.getDate(); 

Restituisce la DATA non l'ORA.

params.timestamp = cell.getDate().getTime()/1000; 

sta convertendo la data in una data + ora - non leggendo l'ora corrente.

Ma anche se si ottiene il timestamp in javascript, l'uscita della funzione di data di PHP dipenderà da quello che fuso orario è nel

+2

Grazie. Ho fuso orario UTC in PHP e fuso orario cinese sul client. Come dovrei modificare javascript? – indapublic

16

Quando si arriva timestamp dalla data Javacript oggetto:.

è uscita sarà interms di millisecondi

<script> 
     var d = new Date(); 
     alert(d.getTime()); 

    </script> 

uscita: 1386746353000

Dove come php data oggetto timestamp interms di secondi

<?php 
     $date = new DateTime(); 
     echo $current_timestamp = $date->getTimestamp(); 
    ?> 

uscita: 1386746353

Così, quando si sta per usare javascript timestamp data di oggetto con la data php oggetto che si dovrebbe dividere timestamp di javascript dal 1000 e utilizzarlo in php

+1

Nota: la divisione di un timestamp per 1000 in javascript produrrà un float. Per ottenere un intero '~~ (Date.now()/1000)' – GrantD71

1

L'UNIX timestamp 1368,0288 milioni corrisponde alla data Wed, 08 maggio 2013 16:00:00 GMT. Nel tuo esempio, ti trovi in ​​China Standard Time (GMT + 8), quindi Javascript visualizza il datetime per questo fuso orario (8 ore dopo -> 09 maggio)