Autor | Zpráva | ||
---|---|---|---|
Oggymot Profil |
#1 · Zasláno: 4. 4. 2015, 15:49:32
Zdravím a jsem to zase já :)
Tentokrát mám problém s odečtem hodin neboli chci vypsat uživateli kolik mu zbývá času do možnosti kliknout na tlačítko. $datum = Db::querySingle(' SELECT datum FROM uzivatele WHERE uzivatele_id=? ', $_SESSION['uzivatel_id']); $c1 = Date("H:i"); $tr = $datum - $c1; if($vyb == '1'){ $text = 'Nelze vybrat daně ( Zbývá: ' . $tr . ' )'; $textik ='Disabled'; } V databázi mám datum nastavené jako TIME... Vše funguje, ale u Zbývá je pořád napsáno 1... Nevíte někdo čím to je ? Předem děkuji za odpověď. |
||
lionel messi Profil |
Oggymot:
Nebolo by vhodnejšie pokračovať v pôvodnom vlákne Jak na odpočet?, keďže ide viac-menej iba o modifikáciu problému? Nemusíš tento príspevok nakopírovať aj do pôvodnej témy. Počkaj na mmoderátora, ktorý ho sám presunie. Moderátor Alphard: Díky, v principu souhlasím, ale už jsem to nechal v tomto vlákně.
|
||
Oggymot Profil |
#3 · Zasláno: 4. 4. 2015, 16:35:05
lionel messi:
Ok, sorry. Příště to tam napíšu. |
||
Alphard Profil |
#4 · Zasláno: 4. 4. 2015, 17:52:09
Ten navržený způsob pro odčítání času je dosti naivní, protože pracuje s normálními řetězci. PHP se v takovém případě pokusí řetězce přetypovat na čísla (což se bude dařit, dokud nenarazí na
: ) a ta odečte. Výsledek je takový, že v $tr je rozdíl hodin a použení, že není dobré provádět aritmetické operace nad řetezci.
Buď lze počítat s unixovým timestampem (což se divím, že tady ještě nikdo nenavrhl), nebo lze použít instance objektů Datetime a Dateinterval .
$datum1 = new \Datetime('2015-04-04 17:36:00'); $datum2 = new \Datetime('2015-04-04 18:43:28'); $interval = $datum1->diff($datum2); echo 'Rozdil mezi daty je '.$interval->format('%h:%I'), PHP_EOL; // pokud může rozsah přesáhnout 24 hodin a chceme pocitat s hodinami (ne dny) $hours = 24*$interval->days + $interval->h; echo 'Rozdil mezi daty je '.sprintf('%d:%02d', $hours, $interval->i), PHP_EOL; |
||
Oggymot Profil |
#5 · Zasláno: 4. 4. 2015, 18:07:21
Děkuji už jsem to vyřešil :)
|
||
Časová prodleva: 9 let
|
0