W jaki sposób przekazywać czas pomiędzy PHP i JS?

Treść dodana: 08 grudnia 2015.

Bardzo często zachodzi konieczność wymiany czasu pomiędzy PHP oraz JavaScript. W obu przypadkach najłatwiej operować na uniksowym znaczniku czasu (liczonym od północy 1 stycznia 1970). Pomiędzy technologiami jest jednak mała, aczkolwiek znacząca różnica. Podstawowa funkcja time() w PHP zwraca integer liczony w sekundach, podczas gdy obiekt Date w Javascript przyjmuje czas w mili sekundach. Z prostych zasad matematycznych wynika, że aby prawidłowo wyświetlić czas w JS, należy wartość w sekundach pomnożyć przez 1000.

<?php 
    ini_set('date.timezone', 'Europe/Warsaw');
?>

<script type="text/javascript">
    var serverTime = <?= time(); ?>;
    var currentTime = new Date(serverTime);
    // zwróci błędny czas, przykładowo Sat Jan 17 1970 19:39:42 GMT+0100 (CET)
    console.log(currentTime);

    var currentTime = new Date(serverTime * 1000);
    // czas jest poprawny
    console.log(currentTime);
</script>

Możemy też operować na obiekcie DateTime:

var serverTime = <?php echo (new DateTime)->getTimestamp(); ?>;

Komentarze

Nie ma jeszcze żadnych komentarzy do wyświetlenia. Może chcesz zostać pierwszą osobą która podzieli się swoją opinią?

Dodaj komentarz

*
Nazwa zostanie wyświetlona wraz z komentarzem. Możesz też utworzyć nowe konto w serwisie, dzięki czemu uzyskasz dodatkową funkcjonalność.
*
Akceptowana jest ograniczona składnia Textile. Wszystkie tagi HTML zostaną usunięte.