Přihlášení

Přihlásit Facebookem

MyEgo.cz › (PHP) den nemá 86 400 sekund?

(PHP) den nemá 86 400 sekund?

Monday, 24.10.11 - PHP - autor:

Víte kolik má den sekund? Občas jsem viděl v PHP toto počítat jako 24 (hodin) * 60 (minut) * 60 (sekund). Nefunguje to.

setlocale(LC_ALL, "czech");
date_default_timezone_set("Europe/Paris");

function p($t) {
	$d = getdate( $t );
	echo $d['mday'],' ';
}

$o = 24*60*60; // 86 400
$t = mktime(0,0,0,10,29,2011);

p($t);
for ($i = 1; $i<=4; $i++) {
	$t += $o;
	p($t);
}

Vypíše:

29 30 30 31 1 
Monday, 24.10.11 - PHP - autor: - 8438x

Komentáře:

  1. [1] Jakub Bouček 193.179.124.216

    Jistě, při posunu času (letní/zimní) je den o 1 hodinu kratší (delší).

    odpověz na tento komentář
    1. na komentář reagoval Radek Hulán — #2
    karma: 1 Monday, 24.10.11, 11:41:31
  2. [2] Radek Hulán

    odpovídá na bukaJ — #1 ano, zimní čas. Aneb (každý) den nemá 86 400 sekund.

    odpověz na tento komentář karma: 10 Monday, 24.10.11, 11:43:16
  3. [3] Petr Kalivoda eduroam-cl-211.feld.cvut.cz

    Tak přesně na toto jsem narazil když jsem loni koncem října programoval rezervační kalendář.

    odpověz na tento komentář karma: 0 Monday, 24.10.11, 14:20:47
  4. [4] Lukáš Hladík ip-85-132-167-162.pamico.cz

    Tak zrovna tenhle případ jednoduše vyřeší místo mktime použití gmmktime

    odpověz na tento komentář
    1. na komentář reagoval Radek Hulán — #5
    karma: 0 Monday, 24.10.11, 14:52:34
  5. [5] Radek Hulán

    odpovídá na luhla — #4 samozřejmě, počítat mktime s offsetem +1 den je správný postup, počítat +86 400 sekund není.

    odpověz na tento komentář karma: 10 Monday, 24.10.11, 16:47:41
  6. [6] Vojtech Machacek 212.24.152.163

    Jeden z důvodů proč mám raději ASP.NET než PHP

    odpověz na tento komentář
    1. na komentář reagoval Radek Hulán — #7
    2. na komentář reagoval mcl — #11
    karma: 0 Monday, 24.10.11, 18:59:39
  7. [7] Radek Hulán

    odpovídá na vmach — #6 PHP se zde chová dobře, právěže pracuje správně s letním / zimním časem

    odpověz na tento komentář karma: 10 Monday, 24.10.11, 19:08:37
  8. [8] Jan Smetana ip-213-220-195-186.net.upcbroadband.cz

    A kam patří vteřina na rozhraní dne? ;)

    Kam patří hranice, při rozdělení pizzy na třetiny?
    1/3 + 1/3 + 1/3 = 1
    0.333.. + 0.333.. + 0.333.. = 0.999..
    Což je o 0.00...01 méně.

    Zkusil bych počítat třeba od poledne.

    odpověz na tento komentář
    1. na komentář reagoval numberone — #10
    karma: 0 Monday, 24.10.11, 23:38:31
  9. [9] Artur Filipiak custcz694101.silesnet.net

    Problém je, že den opravdu nemá 86400 sekund, a konkrétně některé minuty mohou mít 61 sekund (měla by to být "common knowledge" a je to skoro ve všech dokumentacích funkci pracujících s čase - popsáno jako "leap seconds"). Zádrhelem je, že čas v sekundách od roku 1980 má leap seconds řešeny tak, že ty vteřiny trvají 2x déle, zatímco ostatní časové údaje mají o jednu vteřinu navíc (oněch 61 vteřin v minutě).

    Pokud někdo potřebuje přičíst jeden den/měsíc/cokoliv, pak doporučuji tento PŘEHLEDNÝ postup, u kterého snad není pochyb, co znamenají a jak fungují tyto 2 zápisy s rozdílným výsledkem:
    date('Y-m-d', strtotime("2010-02-25 +1 month"));
    date('Y-m-d', strtotime("2010-02-25 +31 days"));

    odpověz na tento komentář karma: 0 Tuesday, 25.10.11, 01:44:41
  10. [10] kt 88.103.68.102

    odpovídá na Xsoft — #8 Takove technicke doplneni. Neni to o 0.00...01 mene. 0.999...=1.0.

    odpověz na tento komentář karma: 1 Wednesday, 26.10.11, 13:25:35
  11. [11] Vojtěch Semecký 62.168.38.26

    odpovídá na vmach — #6 V ASP.NET má snad každý den 86 400 sekund? Tohle přece nijak nesouvisí s konkrétním programovacím jazykem.

    odpověz na tento komentář karma: 0 Monday, 12.12.11, 14:19:50

Přidejte nový komentář:

Pro přidání komentáře a hlasování se musíte nejdříve Registrovat Facebookem

Banan.cz