2013-03-24 13 views
13

javascript:Datownik między JavaScript i PHP

mam komórkę obiekt o dacie coś

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

Object {data: czw 09 maj 2013 00:00:00 GMT + 0800 (China Standard Time) , datownik: 1368028800}

Wtedy staram się sprawdzać znacznik czasu w PHP

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

2013-05-08

Różnica w jeden dzień. Czemu?

Odpowiedz

5
params.date = cell.getDate(); 

Zwraca datę, nie CZAS.

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

konwertuje datę na datę i godzinę - nie odczytuje aktualnej godziny.

Ale nawet jeśli się znacznik czasu w javascript, wyjście z funkcji data PHP będzie zależeć od tego, strefa czasowa jest w

+2

Dzięki. Mam strefę czasową UTC w PHP i chińską strefę czasową na kliencie. Jak powinienem zmodyfikować javascript? – indapublic

16

Gdy pojawi się znacznik czasu z Javacript data obiektu.

wyjście to będzie interms milisekundach

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

    </script> 

wyjściowa: 1386746353000

Gdzie jak php data obiekt datownik interms sekund

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

wyjściowa: 1386746353

Więc kiedy masz zamiar użyć javascript date obiektu datownik z datą php obiektu należy podzielić timestamp javascript przez 1000 i używać go w php

+1

Uwaga: podzielenie znacznika czasu przez 1000 w javascriptu spowoduje utratę wartości. Aby uzyskać liczbę całkowitą '~~ (Date.now()/1000)' – GrantD71

1

Unix Timestamp 1368028800 odpowiada dacie śro, 08 maja 2013 r. 16:00:00 GMT. W twoim przykładzie jesteś w China Standard Time (GMT + 8), więc JavaScript wyświetla datetime dla tej strefy czasowej (8 godzin później -> 09 maja)