Софтуерно Инженерство
Loading...
iwanovw avatar iwanovw 7 Точки

Exam Retake - Game Catalog: Register form

Здравейте, опитвам се да валидирам рожденната дата на потребителя, когато се регистрирва. По условие се изисква да е между 1900 год и текущата, но нещо judge се сърди и не дава точки. Ето ми кода: 

        if (strtotime($user->getBornOn()) > strtotime('now')) {
            throw new \PDOException("Born On must be between 1900 and 2018!");
        }

 

Тагове:
0
PHP Web 04/04/2018 19:50:44
dvdty avatar dvdty 478 Точки

Първо: strtotime използва unix timestamp - броя секунди изминали от 1 януари 1970. Не мисля, че ще ти свърши работа по-ранни дати.

Второ: проверката ти не е вярна. В if-а разглеждаш само случай, в който датата на раждане е след тукещата. Нямаш никаква проверка дали годината е преди 1900.

Силно ти препоръчвам да използваш DateTime обекта.

0
04/04/2018 20:37:46
iwanovw avatar iwanovw 7 Точки

Да, знам че нямам проверка дали е преди 1900, просто защото не успях да го измисля и затова реших да попитам. Ще го разгледам обекта и ще опитам. Благодаря за препоръката. :)

0
iwanovw avatar iwanovw 7 Точки

А за съобщението за грешка трябва ли да пиша някакво си ръчно

Born On must be between 1900 and 2018!

или от обекта да взема грешките? Питам не за друго, ами че ако вярното условието в judge е написано с 2017 год, а задам 2018 год - отново няма да ми даде, че ми е верен отговорът дори и подходът за валидация да е правилен. /Проверява какво пише в съобщението/ wink

 

0
05/04/2018 20:51:37