NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Anomálie PHP a čas v UNIX timestamp?

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Pavel
Tvůrce
Avatar
Pavel:27.9.2015 10:53

Ahoj,
nedávno jsem řešil problém s převodem staršího formátu UNIX timestamp a zjistil jsem zajímavou anomálii Jde o měsíc Březen roku 2015:

$casOD=1425164400;
$casDO=1427839199;
echo strftime("%e.%m.%y - %H:%M:%S", $casOD);  //vypíše 1.03.15 - 00:00:00 - v pořádku
echo strftime("%e.%m.%y - %H:%M:%S", $casDO);   //vypíše  31.03.15 - 23:59:59  - v pořádku
echo ($casDO-$casOD);   //je 2674799 , což je 30dní a POUZE 22:59:59 hodin - chyba o 1 hodinu

Jde pouze o březen. Nevíte proč se to děje?

Pavel

 
Odpovědět
27.9.2015 10:53
Avatar
mayo505
Tvůrce
Avatar
Odpovídá na Pavel
mayo505:27.9.2015 11:15

možno je to kvôli prevodu na letný čas, kde sa posunie čas o jednu hodinu dopredu a teda má ten mesiac o hodinu menej. Ale neviem ako toto berú PHP funkcie do úvahy. Skús to aj s októbrom a budeš mať istotu

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
27.9.2015 11:15
Avatar
shaman
Člen
Avatar
Odpovídá na Pavel
shaman:27.9.2015 22:51

Ano cas sa presuva 29 marca 2015 ale to nema vplyv na unix timestamp. Timestamp sa pocita ako sekundy od 1.1.1970 takze sa ti nemoze stratit hodina.
Ja som si spustil tvoj program a mne to ukazuje ine hodnoty a dokonca aj ten casovy rozdiel je ok.

<?php
$casOD=1425164400;
$casDO=1427839199;
echo strftime("%e.%m.%y - %H:%M:%S %Z", $casOD)."<br/>";  //vypíše 1.03.15 - 00:00:00 - v pořádku
echo strftime("%e.%m.%y - %H:%M:%S %Z", $casDO)."<br/>";   //vypíše  31.03.15 - 23:59:59  - v pořádku
echo ($casDO-$casOD);

zobrazuje

28.02.15 - 23:00:00 UTC
31.03.15 - 21:59:59 UTC
2674799
Editováno 27.9.2015 22:52
Nahoru Odpovědět
27.9.2015 22:51
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.