2013-03-24 2 views
13

Javascript:Отметка между Javascript и PHP

У меня есть объект ячейку с датой что-то

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

объекта {дата: чт 9 май 2013 00:00:00 GMT + 0800 (China Standard Time) , метка времени: 1368028800}

Затем я пытаюсь проверить метку времени в PHP

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

2013-05-08

Разница за один день. Зачем?

ответ

5
params.date = cell.getDate(); 

Возвращает дату, а не время.

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

преобразование даты в дату + время - не чтение текущего времени.

Но даже если вы получаете временную метку в JavaScript, выход функции даты PHP будет зависеть от того, что часовой пояс это в

+2

Спасибо. У меня есть часовой пояс UTC в PHP и китайский часовой пояс на клиенте. Как мне изменить javascript? – indapublic

16

Когда вы получаете временную метку от даты Javacript объекта:.

его выход будет interms милли-секунды

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

    </script> 

выход: 1386746353000

Где, как PHP дата отметкой о времени interms секунд

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

выход: 1386746353

Итак, когда вы собираетесь использовать яваскрипт даты объект метку время с датой PHP объектом, который вы должны разделить метку JavaScript на 1000 и использовать его в PHP

+1

Примечание: деление метки времени на 1000 в javascript даст поплавок. Чтобы получить целое число '~~ (Date.now()/1000)' – GrantD71

1

UNIX Timestamp 1368028800 соответствует дате Wed, 08 May 2013 16:00:00 GMT. В вашем примере вы находитесь на стандартном китайском времени (GMT + 8), поэтому Javascript отображает дату и время для этого часового пояса (8 часов спустя -> 09 мая)

Смежные вопросы