Autor Zpráva
IdemeNaHavaj
Profil
Zisťujem si tkato kedy bol príspeok zapísaný pred akým časom
    $aktualny_cas = time();
    $hrany_cas = $key->time;
    $sekundy = $aktualny_cas-$hrany_cas;
    $before = date("H:i:s", ($sekundy));

ale vždy mi to tam hádže o 1 hodinu viac, prečo??
Tori
Profil
Špatně nastavené časové pásmo.
IdemeNaHavaj
Profil
a ako to tam môžem nastaviť? alebo to mám len odpočítať -1 hodina?
juriad
Profil
Že by časová zóna?
Funkce date není určená k formátování rozdílu časů!
Dejme tomu, že rozdíl je 200 - tedy odeslán před 200 sekundami.
Ale čas 200 odpovídá: 1.1.1970 0:3:20 v časové zóně UTC. U nás v Praze tehdy bylo o hodinu více.

Samotné odečtení hodiny nestačí kvůli letnímu času. (Pokud by byl odeslán před více jak půl rokem.)


Správně bys měl použít metodu http://www.php.net/manual/en/datetime.diff.php a až samotný interval formátovat. (Pokud máš k dispozici PHP >= 5.3.0)
Joker
Profil
juriad:
Samotné odečtení hodiny nestačí kvůli letnímu času. (Pokud by byl odeslán před více jak půl rokem.)
To by nemělo mít význam, při konverzi na timestamp by se změna času měla ignorovat (pokud má server správné časové pásmo), problém by to potenciálně byl při opačné konverzi, ale možná až když rozdíl bude víc než zhruba 9 a půl roku, protože letní čas byl v Československu zaveden až v roce 1979.

Každopádně asi daleko větší problém je, že ten algoritmus funguje jen pro rozdíly menší než 24 hodin. Jinak [#4] je samozřejmě správná odpověď.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0