Zadejte hledaný výraz...

Získání času

Denis Ulmann
verified
rating uzivatele
(9 hodnocení)
9. 12. 2011 16:53:55
Zdravím,
Mám takový dotaz, mám číslici dejme tomu 5784133 jsou to sekundy, jak zjistím kolik je to dní, hodin, minut a sekund? Dokážu nějak zkomolit funkci, která to zjistí, ale není to ono, neexistuje na to nějaká funkce?
9. 12. 2011 16:53:55
https://webtrh.cz/diskuse/ziskani-casu#reply705993
$sekundy = 5784133;
$minuty = $sekundy/60;
$hodiny = $sekundy/3600;
$dny = $sekundy/86400;
...
9. 12. 2011 17:11:06
https://webtrh.cz/diskuse/ziskani-casu#reply705992
Jiří
verified
rating uzivatele
(1 hodnocení)
9. 12. 2011 17:13:22
$time = 5784133;
$days = floor($time / (24*60*60));
$remHours = $time % (24*60*60);
$hours = floor($remHours / (60*60));
$remMins = $remHours % (60*60);
$mins = floor($remMins / 60);
$secs = $remMins % 60;
Je víc způsobů a dost možná bude i nějaký lepší, na php už jsem pár let pořádně nesáhl.
9. 12. 2011 17:13:22
https://webtrh.cz/diskuse/ziskani-casu#reply705991
Denis Ulmann
verified
rating uzivatele
(9 hodnocení)
9. 12. 2011 17:20:30
Díky Spocklw zkusím a budulinku, na to bych přišel i sám, ale já chci z jednoho času zjistit všechny naráz právě
---------- Příspěvek doplněn 09.12.2011 v 17:39 ----------
Díky moc Spocklw jde to jak má
9. 12. 2011 17:20:30
https://webtrh.cz/diskuse/ziskani-casu#reply705990
Jirka
verified
rating uzivatele
(74 hodnocení)
9. 12. 2011 21:25:43
nečteš moc manuál od php ... viz
9. 12. 2011 21:25:43
https://webtrh.cz/diskuse/ziskani-casu#reply705989
Jiří
verified
rating uzivatele
(1 hodnocení)
9. 12. 2011 22:17:29
Tak to umí i date(). Ale to řeší převod timestampu na datum, ne třeba případ kdy mám počet sekund do nějaké události a chci je převést způsobem viz výše.
9. 12. 2011 22:17:29
https://webtrh.cz/diskuse/ziskani-casu#reply705988
Jirka
verified
rating uzivatele
(74 hodnocení)
10. 12. 2011 15:30:54
Napsal Spocklw;731821
Tak to umí i date(). Ale to řeší převod timestampu na datum, ne třeba případ kdy mám počet sekund do nějaké události a chci je převést způsobem viz výše.
asi jsi nepochopil počítání času v timestampu - je mi jasný, že chtěl třeba odečíst dva časy od sebe a rozdíl získat rozparsovanej do jednotlivých položek, což getdate udělá, akorát musí člověk vědět,že offset timestampu je 1.1.1970 a je potřeba to od výsledku odečíst ( a samozřejmě hlídat pořadí prvků při odečtu)
10. 12. 2011 15:30:54
https://webtrh.cz/diskuse/ziskani-casu#reply705987
MAHI
verified
rating uzivatele
(15 hodnocení)
10. 12. 2011 15:51:42
Napsal jiriki;731954
asi jsi nepochopil počítání času v timestampu - je mi jasný, že chtěl třeba odečíst dva časy od sebe a rozdíl získat rozparsovanej do jednotlivých položek, což getdate udělá, akorát musí člověk vědět,že offset timestampu je 1.1.1970 a je potřeba to od výsledku odečíst ( a samozřejmě hlídat pořadí prvků při odečtu)
Ano a přesně z toho důvodu se getdate na toto nehodí. Timestamp bych se snažil vyhnout, kde jen je to možné, je prostě překonaný.
Řešení, které napsal Spocklw je naprosto vyhovující - asi nejlepší a nejjednodušší možné. Pro ty objektově založenější:
$timespan = "5784133";
$d1 = new DateTime();
$d2 = new DateTime();
$d2->add(new DateInterval('PT'.$timespan.'S'));
$iv = $d2->diff($d1);
echo $iv->format("%m mesice, %d dny, %h hodin, %I minut, %S sekund.");
var_export($iv);
// vypíše:
// 2 mesice, 4 dny, 22 hodin, 42 minut, 13 sekund.
//DateInterval::__set_state(array( 'y' => 0, 'm' => 2, 'd' => 4, 'h' => 22, 'i' => 42, 's' => 13, 'invert' => 1, 'days' => 66, ))
10. 12. 2011 15:51:42
https://webtrh.cz/diskuse/ziskani-casu#reply705986
Pro odpověď se přihlašte.
Přihlásit