Autor Zpráva
slon_cz
Profil
Dobrý den, rád ybch požádal o radu, nedaří se mi vymyslet, jak co nejjednodušeji a hlavně funkčně zpracovat čas v daném formátu a převést ho na vteřiny

Formát výstupu je různý:
1) 5h12m23s
2) 12m23s
3) 5h
4) 23s
5) 12m

Toto jsou možné výstupy, které lze dostat. Bohužel jsou v tomto formátu a mě se nedaří vymyslet, jak tyto data "jednoduše" převést na vteřiny - jednou funkcí vždy. Zkoušel jsem zjišťování zda string obsahuje "h", "m", "s", následné explode na tyto části a postupně převést na vteřiny každé zvlášť, ale nedostal jsem se k výsledku, jelikož se stále mění formát, respektive formát je vždy v jednom z těchto typů.

Napadá někoho, jak tyto stringy dokázat přepočíst na počet vteřin a byl by ochoten se podělit? Děkuji mnohokrát a přeji hezký zbytek dne
Radek9
Profil
Stačí to rozsekat regulárem a pak přenásobit a sečíst:
preg_match('/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/', $str, $match);
$seconds = (int)($match[1] ?? 0) * 3600 + (int)($match[2] ?? 0) * 60 + (int)($match[3] ?? 0);
slon_cz
Profil
Skvěle, to je to co jsem hledal, děkuji!

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