Я хочу сделать мою регистрацию, как в Facebook. Есть 3 выпадающих списка, где я выбираю год, день и месяц. Я закончил 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.
Кто-нибудь есть идеи, как решить эту проблему?
Во-первых, это не имеет ничего общего с високосным годом — кроме этого февраля может быть 28 или 29 дней в зависимости от того, какой год выбран. Но другие месяцы также имеют разное количество дней, поэтому вам нужно всегда проверять, а не только в високосный год.
Чтобы проверить правильность даты на стороне PHP, используйте технику, продемонстрированную в этот ответ.
Кроме того, вы можете рассмотреть возможность создания более удобного пользовательского интерфейса, автоматически регулируя количество доступных дней в зависимости от выбранного года и месяца. Когда вы это сделаете, разместите элементы управления в порядке год-месяц-день для оптимального взаимодействия с пользователем.
Других решений пока нет …