Autor Zpráva
pardubak99
Profil
Poradíte někdo s regulárem na kontrolu zadaného času po 1/4 hodinách ve formátu hh.mm? Povolené hodnoty jsou např. i 0 až 24 bez tečky a zbylých nul nebo i s tečkou a popř. i nulami, 15.3 bez koncové nuly, 14.15, 22.45 , ..... proste vše od 0 do 24.00 po 1/4 hodinach.
Dále prosím popř. doformátování zadaného na standart hh:mm a popř. i o "zaokrouhlování" na požadované 1/4 hodiny když se uživatel splete.
Děkuji.
Joker
Profil
pardubak99:
Na tohle myslím regulární výraz není ideální.
Krom toho, tohle: „15.3 bez koncové nuly“, tj. automaticky měnit číslo 3 na 30, není dobrý nápad. Vidím to úplně živě, jak se potom interval zkrátí na 5 minut (a větu „takhle je to konečné a určitě se to nikdy měnit nebude“ jsem zažil X-krát) a bude se převádět 15.3 na 15.30 a 15.5 na 15.05, pak interval po minutě a vznikne naprostý chaos.
Nehledě na tohle:
popř. i o "zaokrouhlování" na požadované 1/4 hodiny když se uživatel splete.
Jinak řečeno: 15.2→15.00, 15.3→15.30, 15.4→15.00, 15.8→15.15? Nepřijde mi to úplně intuitivní a domyšlené.

Když si zkusím představit řešení:
1. Převést na jeden oddělovač (str_replace všechny možné oddělovače na tečku třeba)
2. Rozdělit podle oddělovače (explode)
3. S jednotlivými částmi pracovat jako s čísly.
blaaablaaa
Profil
pardubak99:
A co toto ošetřit už na vstupu v JS a nenechat uživatele zadat nesprávný čas?
Na serverové straně pak pracovat jak popisuje Joker.
pardubak99
Profil
Díky za příspěvky.
- jasně, oddělovače převedu str_replace, to už mám připravené, to je fuk co tam zadají.
- co se týče toho zadání času a validace, tam chci trochu uživatelům zjednodušit práci a umožnit zadat např. 15 místo 15:00 nebo 14.3 místo 14:30, ..... Tady si furt myslím že validace regulárem byla optimální. Před oddělovačem a oddělovač je to jasné: ([01]?\d|2[0-4])(\.|,|:)? .... ale ten konec kde může být už jen 0, 00, 15, 3, 30, 45 nevím jak optimálně napsat.
- na to "zaokrouhlování" se asi fakt vyfláknu, prostě jim vychodím chybu zadání a basta :-)

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