Autor Zpráva
Vendelína
Profil *
Ukládám si dny do mySQL ve tvaru Time(). Když si chci zobrazit datum, použiji:
echo Date("d.m.Y H:i",$datum); // 26.04.2012 00:00

Pokud bych si chtěl vypočítat, kolik dní zbývá, tak samozřejmě udělám:
$pocet = floor($datum - Time());

... jenže nastane problém, protože mě výjde číslo 1, což je špatně. Nikdy to neurčí přesně počet dní.
Potřeboval bych to udělat tak, že když je prostě datum 26.dubna ... a dnes je tento den, tak má být nula ... a to ikdyž bude za minutu půlnoc. Pokud už bude datum 27.dubna ... treba 00:00, 00:01 atd., tak počet dní musí být 1.

Jak na to? ... ukládání datumu můžu místo času 00:00 dávat třeba jiné datum ... ale jaké?
Alphard
Profil
Zkuste http://php.net/manual/en/datetime.diff.php
peta
Profil
http://cz.php.net/function.time
"Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)."
Casove razitko se pocita jako 0 + 1 + 1... Novejsi cas bude mit vic milisekund. Spravne poradi odcitani je tedy cislo vetsi, novejsi, od cisla mensiho, starsi datum.
time() - $datum.

http://cz.php.net/function.time
"number of seconds"
Casove razitko je v sekundach, takze rozdil je pocet sekund. Prevod podle fyzikalnich tabulek je 1 min = 60 s, 1 h = 60 min, 1 den = 24 h. Vynasobeno da 86400.
Rozdil tedy podelis cislem 86400 a dostanes pocet dni.

http://cz.php.net/manual/en/ref.math.php
"floor — Round fractions down"
"ceil — Round fractions up"
Pokud ho chces rozdil zaokroulovat na nejblizsi vyssi den, pak je k tomu urcena funkce ceil a ne floor.
Jan Tvrdík
Profil
Vendelína:
$datum = strtotime('26.04.2012 07:00');
$dnes = strtotime('today');
$rozdil = floor(($datum - $dnes) / (24 * 60 * 60));
echo 'Do ' . date('j. n. Y G:i', $datum) . ' zbývá ' . $rozdil . ' dnů.';
Borius
Profil
Pokud nepoužiješ [#2] Alphard, pak si musíš ošetřit „stav“ před půlnocí a po půlnoci sám.
Tedy, pokud má platit od 26.4.2012 23.59:59 do 27.4.2012 00.01:01 zbývá jeden den (ačkoli to pouhé 2 sekundy),
a pokud má platit od 26.04.2012 00.00:01 do 26.04.2012 23.59:59 žádný den (ačkoli to téměř 24 hodin).
A jak se získávají hodiny, minuty a vteřiny – to víš dobře: [#1] Vendelína.
Šéva
Profil
a nebylo by třeba jednodušší zkusit použít funkci mktime() ?
jenikkozak
Profil
Šéva:
a nebylo by třeba jednodušší zkusit použít funkci mktime() ?
Jednodušší než co? Použít kde, jak? Buď, prosím, konkrétnější.

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: