Autor | Zpráva | ||
---|---|---|---|
frost Profil |
#1 · Zasláno: 16. 11. 2007, 09:08:06
Zdravím přátelé,
najde se tu dobrá duše,která by mi dokázala poradit. Mám hodnotu času v desítkové soustavě. Např. 72,1643, což je 72 hodin 9 minut a 51 sekund. Já bych právě nějak v PHP skriptu potřeboval číslo 72,1643 převést na čas. Víte někdo jak na to? Předem díky. |
||
Joker Profil |
#2 · Zasláno: 16. 11. 2007, 09:30:06
tak třeba:
$vstup = 72.1643; $hodiny = floor($vstup); // 72 $zbytek = ($vstup - $hodiny) * 60; // minuty jako desetinné číslo: 9,858 $minuty = floor($zbytek); // 9 $zbytek = ($zbytek - $minuty) * 60; // sekundy jako desetinné číslo: 51,48 $sekundy = round($zbytek); // 51 |
||
frost Profil |
#3 · Zasláno: 16. 11. 2007, 09:50:31
Děkuji, neznal jsem funkci floor().
Netušíte prosím ještě někdo jak udělat aby výstup v případě jednomístného čísla byl dvojmístný, tedy místo 9 by byl 09. |
||
Joker Profil |
#4 · Zasláno: 16. 11. 2007, 10:00:07
Netušíte prosím ještě někdo jak udělat aby výstup v případě jednomístného čísla byl dvojmístný, tedy místo 9 by byl 09.
Tušíme :-) http://cz.php.net/str_pad |
||
nightfish Profil |
if ((int)$hodiny < 10) $hodiny = "0".(int)$hodiny;
if ((int)$minuty < 10) $minuty = "0".(int)$minuty; if ((int)$sekundy < 10) $sekundy = "0".(int)$sekundy; a nebo $hodiny = sprintf("%02d", $hodiny); $minuty = sprintf("%02d", $minuty); $sekundy = sprintf("%02d", $sekundy); EDIT: hmm, tak str_pad mě nenapadlo |
||
frost Profil |
#6 · Zasláno: 16. 11. 2007, 10:05:36
Mnohokrát díky. Já si snad ten manuál budu muset prostudovat.
str_pad(floor($zbytek), 2, "0", STR_PAD_LEFT); |
||
es Profil * |
#7 · Zasláno: 16. 11. 2007, 14:15:52
čo takto:
$vstup = 72.1643; $cas = $vstup * 3600; A ďalej používať $cas vo funkciách PHP, napríklad: $x = $cas + time(); // $x = čas za 72 hodín 9 minút a 51 sekúnd. $xg = getdate($x); $m = $xg['mday']; // $m = aký bude deň mesiaca za 72 hodín 9 minút a 51 sekúnd. |
||
es Profil * |
#8 · Zasláno: 16. 11. 2007, 14:19:11
Načo to robiť jednoducho, keď to ide zložito.
|
||
Joker Profil |
#9 · Zasláno: 16. 11. 2007, 14:57:21
es
Zajímavé řešení, až na to, že úplně jiného problému, než na co se frost ptal ;-) |
||
es Profil * |
#10 · Zasláno: 16. 11. 2007, 15:40:18
Zajímavé řešení, až na to, že úplně jiného problému, než na co se frost ptal ;-)
Frost sa pýtal, ako previesť hodnotu na čas, tak neviem v čom to problém nerieši. Skôr mal svoju otázku presnejšie formulovať, akým spôsobom chce tú hodnotu používať v súvisloti s časom. Napríklad sa vôbec nepýtal, ako z toho čísla vypočítavať hod. min. sek.. Než rátať hodiny, minúty, sekundy nejakými pofidérnymi násobeniami, deleniami, zaokrúhľovniami, tak radšej využiť na to funkcie PHP. Ak sa nehodí getdate, tak má k dispozícii plno iných funkcií. |
||
DFly Profil |
#11 · Zasláno: 18. 11. 2007, 00:39:38
misto str_pad() bych radeji doporucil sprintf() - delane na cisla
|
||
nightfish Profil |
#12 · Zasláno: 18. 11. 2007, 10:18:22
DFly
misto str_pad() bych radeji doporucil sprintf() - delane na cisla udělal jsem si malé srovnání 3 možných přístupů (str_pad, sprintf, if - z mého příspěvku 16.11.2007 10:04:14, ale trochu zoptimalizovaný - v podmínce if jsem vyhodil to přetypování, není potřeba) nejrychlejší je ten if (100 % času), pak str_pad (107 % času) a nejpomalejší sprintf (131 % času), takže já bych naopak sprintf, kvůli jeho rychlosti, nepoužíval (pokud nepotřebuješ nějaké složitější formátování, které by se jinak realizovalo velmi složitě) |
||
Časová prodleva: 16 let
|
0