2016-01-24 3 views
0

Я хочу сделать свою регистрацию, как в Facebook. Существует 3 dropdownlist, где я выбираю год, день и месяц. Я закончил 3 функции, которые возвращают меня (31 день, 12 месяцев и лет с 1915 года по сегодняшний день). Теперь у меня есть одна проблема, когда я разбираю строку на сегодняшний день. Это мой код:Формат данных с високосного года

public function getDate() { 
    $month = $this->Month; 
    return $this->Year . '-' . $month . '-' . $this->Day; 
} 

public function getDbFormatedDate() { 
    $dateDeadline = date_create($this->getDate()); 
    return date_format($dateDeadline, 'Y-m-d'); 
} 

, например, когда я беру

31 февраля 2016 года

. В моей базе данных этот код сохранить дату

2 марта 2016

. Я думаю, что, может быть, мне следует сравнить мои даты, и когда пользователь нажимает 31 февраля 2016 года, некоторые функции должны сравнивать эту дату с окончательной датой даты и возвращения, что эта дата не существует. Посмотрите на календарь на следующем примере, когда я нажимаю

31.04.2016

эта дата не существует, и мой код сохранения в базе

1.05.2016.

У кого-нибудь есть идея, как это решить?

+0

Вы должны сказать что-то о языке и системе, которую используете ... –

+0

его в php в Yii2 – Informer

ответ

1

Прежде всего, это не имеет ничего общего с високосным годом - кроме того, что февраль может иметь 28 или 29 дней в зависимости от того, какой год выбран. Но в других месяцах есть и другое количество дней, поэтому вам нужно всегда проверять - не только во время високосного года.

Чтобы подтвердить, что дата действительна на стороне PHP, используйте технику, показанную в this answer.

Кроме того, вы можете захотеть создать более дружественный пользовательский интерфейс, автоматически регулируя количество доступных дней в зависимости от выбранного года и месяца. Когда вы это сделаете, поместите элементы управления в порядке год-месяц-день для оптимального использования пользователем.