| Autor | Zpráva | ||
|---|---|---|---|
| Vendelína |
#1 · Zasláno: 26. 4. 2012, 13:40:20
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:00Pokud 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 |
#2 · Zasláno: 26. 4. 2012, 14:34:52
|
||
| peta Profil |
#3 · Zasláno: 26. 4. 2012, 14:42:27 · Upravil/a: peta
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 |
#4 · Zasláno: 26. 4. 2012, 15:58:25 · Upravil/a: Jan Tvrdík
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 |
#5 · Zasláno: 26. 4. 2012, 17:56:09
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 |
#6 · Zasláno: 27. 4. 2012, 12:16:23
a nebylo by třeba jednodušší zkusit použít funkci mktime() ?
|
||
| jenikkozak Profil |
#7 · Zasláno: 27. 4. 2012, 16:03:16
Šé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ší. |
||
|
Časová prodleva: 1 rok
|
|||