![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 6 Dołączył: 29.08.2009 Ostrzeżenie: (0%)
|
Witam wszystkich!
Spotkałem się w Internecie z używaniem DateTime::createFromFormat do sprawdzania poprawnosci dat. Czy ktoś jest w stanie stwierdzić czy to się do tego nadaje? Jak to się ma do problemu który napotkałem poniżej? Czy pozostaje jedynie checkdate()? Zapragnalem walidować datę przy użyciu: DateTime::createFromFormat i weryfikacji czy wynik jest obiektem, dla ilustracji kod:
Postarałem się wyłuskać problem w najczystszej postaci, a następnie wynik var_dumpa (chyba nie musze dodawac, ze wyjątku nie rzuca). Kod object(DateTime)#14 (3) { ["date"]=> string(19) "2014-01-13 19:21:11" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Warsaw" } być może ma to jakieś znaczenie Kod PHP 5.3.3-7+squeeze14
|
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
IMO raczej powinieneś pozostać przy checkdate. To, że zapis 2013-13-13 może zostać w pewnych przypadkach zostać zinterpretowany jako jakaś data, nie oznacza, że jest to prawidłowa data.
Poniżej masz przykłady walidatorów dat z dwóch największych PHP'owych FW: 1. Symfony2: https://github.com/symfony/symfony/blob/mas...teValidator.php 2. ZendFramework2: https://github.com/zendframework/zf2/blob/m...or/Date.php#L98 Jak widzisz ZF2 również korzysta z DateTime::createFromFormat() jednak sprawdzają czy DateTime nie zwróciło jakiegoś ostrzeżenia dot. błędnej daty. Wg mnie pierwsze rozwiązanie jest nieco zgrabniejsze, bo: 1. Kod jest zdecydowanie prostszy. 2. Zakłada, że podana data będzie w formacie YYYY-MM-DD, a to już samo w sobie wymusza to Tobie trzymanie się jednego określonego formatu przy przesyle/przetwarzaniu danych. Ten post edytował Crozin 11.02.2013, 19:58:29 |
|
|
|
![]() ![]() |
|
Aktualny czas: 25.12.2025 - 06:07 |