| Autor | Zpráva | ||
|---|---|---|---|
| ForestCZE Profil |
#1 · Zasláno: 10. 2. 2018, 01:25:09
Zdravím, snažím se převést čas v sekundách na jednotlivé veličiny a mám tento kód:
$ticks = 36000; $days = $ticks / (24 * 60 * 60); $hours = ($ticks - ($days * (24 * 60 * 60))) / 3600; $minutes = $ticks - ($days * (24 * 60 * 60) + $hours * (3600)) / 60; $seconds = $ticks - ($days * (24 * 60 * 60) + $hours * (3600)) + $minutes * 60; Dny a hodiny to vypočítá správně. Minuty a sekundy vyhodí obrovská čísla. Co tam mám špatně? Díky :) |
||
| Kajman Profil |
#2 · Zasláno: 10. 2. 2018, 01:30:48
V minutes rozdíl uzávorkujte a teprve potom dělte.
|
||
| Kajman Profil |
#3 · Zasláno: 10. 2. 2018, 01:32:29
A u sekund minuty odčítejte.
|
||
| ForestCZE Profil |
Takto?
$minutes = ($ticks - ($days * (24 * 60 * 60) + $hours * (3600))) / 60; $seconds = ($ticks - ($days * (24 * 60 * 60) + $hours * (3600))) - $minutes * 60; EDIT: Popřípadě kdyby někdo měl nějaké lepší řešení, např. s modulem nebo něco podobného, tak budu rád. |
||
| Tomášeek Profil |
#5 · Zasláno: 10. 2. 2018, 05:36:01
ForestCZE:
„Takto?“ Funguje to? Spíše ne, že? Tak takto asi ne. $ticks = 136073; $minute = 60; $hour = 3600; $day = 86400; $days = floor($ticks / $day); $hours = floor(($ticks - $days * $day) / $hour); $minutes = floor(($ticks - $days * $day - $hours * $hour) / $minute); $seconds = $ticks - $days * $day - $hours * $hour - $minutes * $minute; S modulem pak případně takto $days = floor($ticks / $day); $hours = floor(($ticks % $day) / $hour); $minutes = floor(($ticks % $hour) / $minute); $seconds = $ticks % $minute; Není to ale žádná velká logika, myslím, že po chvíli přemýšlení navíc bys měl být schopný se správnému "vzorci" dobrat. Jak s modulem, tak bez něj. |
||
| ForestCZE Profil |
#6 · Zasláno: 10. 2. 2018, 13:56:33
Tomášeek:
„Funguje to? Spíše ne, že? Tak takto asi ne.“ Právě, že funguje. Jinak díky, vyzkouším. |
||
| Tomášeek Profil |
#7 · Zasláno: 10. 2. 2018, 15:58:55
Aha, zkusil jsem to vykopirovat k tomu memu prikladu a vrátilo to špatné hodnoty. Někde jsem asi rano udělal chybu.
Vypada to dost podobne (jsem na tel.), ty odecitas součet všeho, ja rovnou jednotlive sekundy. Chybi ti tam ale floor, bude ti to vracet desetinná cisla, coz nechceš (zkus si dosadit nejake méně kulaté cislo do ticks. |
||
| ForestCZE Profil |
#8 · Zasláno: 10. 2. 2018, 18:13:07
Tomášeek:
Vždycky dosazuji celé číslo a pokud náhodu vyjde desetinné, tak integer stejně vrátí celé, což přesně potřebuji. Funguje to perfektně s tím modulem od tebe. Ještě jednou díky :) |
||
| Keeehi Profil |
#9 · Zasláno: 10. 2. 2018, 18:26:12
ForestCZE:
„pokud náhodu vyjde desetinné, tak integer stejně vrátí celé,“ To máš pravdu. Ovšem přetypování na integer v tvém kódu nikde není a výsledek operace int / int může být i float.
|
||
|
Časová prodleva: 8 let
|
|||
0