Autor Zpráva
frost
Profil
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
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
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
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
Mnohokrát díky. Já si snad ten manuál budu muset prostudovat.

str_pad(floor($zbytek), 2, "0", STR_PAD_LEFT);
es
Profil *
č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 *
Načo to robiť jednoducho, keď to ide zložito.
Joker
Profil
es
Zajímavé řešení, až na to, že úplně jiného problému, než na co se frost ptal ;-)
es
Profil *
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
misto str_pad() bych radeji doporucil sprintf() - delane na cisla
nightfish
Profil
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ě)

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:

0