|
|
|
| Здравствуйте, как узнать, что пользователь ввел валидную дату? Дата вводится по шаблону __.__.____ Вместо подчеркиваний можно вводить только цифры. Проблема в том, что программа пропустит и такую дату: 45.34.2345. Как тут быть? | |
|
|
|
|
|
|
|
|
для: antf
(18.07.2014 в 02:35)
| |
<?
if($data = strtotime('45.34.2345')) {
echo $data;
}
if($data = strtotime('21.5.2014')) {
echo $data;
}
|
Если время введено корректно, но например вне рамок диапазона 32-разрядной системы, то будет возвращена метка Unix, что также можно проверять.
И зачем такой "строгий" шаблон? Во всяком случае так дату в базе не хранить. | |
|
|
|
|
|
|
|
для: confirm
(18.07.2014 в 09:34)
| | >И зачем такой "строгий" шаблон? Во всяком случае так дату в базе не хранить.
Шаблон для людей, дата преобразовывается потом с помощью регулярных выражений. js-библиотеку, задающую шаблон, мне Commander посоветовал. Она очень понравилась руководству и паре заказчиков. Теперь они ее внедряют, где только можно на сайте. | |
|
|
|
|
|
|
|
для: antf
(18.07.2014 в 17:03)
| | Да на клиенте вы что хотите творите, хотя заставлять писать дату обязательно так как вам хочется, это не думаю, что хорошо.
А вот хранить в базе дату в этом формате нет, сами понимаете почему. А посему преобразовывать ее при получении в любом случае придется, и рег. выражений для этого совсем не требуется.
И вывести из базы опять в формате который вам нужен, так это DATE_FORMAT()
Что вам советовали, помню, хотя это просто лишнее, тем более при единственном формате ввода. Да и вообще, клеить по каждому пустячному поводу на странице какой-то плагин, это не метод программирования. | |
|
|
|
|
|
|
|
для: confirm
(18.07.2014 в 17:13)
| | >Да на клиенте вы что хотите творите, хотя заставлять писать дату обязательно так как вам хочется, это не думаю, что хорошо.
Это дата закрытия заказа. Заполняет менеджер. Данные будут вставлены в столбец типа DATE.
>А посему преобразовывать ее при получении в любом случае придется, и рег. выражений для этого совсем не требуется.
Хорошая мысль, strtotime спасет. Прочитал 3 раза, потом понял.
Здесь плагин выступает как средство решения проблемы, к тому же он всем понравился :) | |
|
|
|
|
|
|
|
для: antf
(18.07.2014 в 17:20)
| | Да нет в вашей задачи никакой проблемы, вы ее сами придумали.
Лично мне бы не понравилось грузить никчемные излишки наряду с полезным. Если вы по заданию жены пойдете на рынок и купите не только то, что она просила, а еще и лишнее чего вам насоветовали, приятно ли будет тащить лишнее и обрадуется ли жена ненужному? Вот тоже и на страницах происходит. | |
|
|
|
|
|
|
|
для: confirm
(18.07.2014 в 17:27)
| | У меня не жена, у меня заказчики и руководство, которое с ними общается. Они настаивают на плагине. | |
|
|
|
|
|
|
|
для: antf
(18.07.2014 в 17:30)
| | Вот уж никогда не поверю тому, что заказчик разбирается в программировании лучше исполнителя. Другими словами, они настаивают на этом только лишь потому, что вы это им сами подсунули, а до этого вряд ли они знали о нем, да и вообще такого слова "плагин".
Плагины не пишутся под единственное конкретное действие, просто это глупо. Хотите, ну так используйте решения из этого плагина, тем более что проверить на клиенте формат даты это простое рег. выражение, а если вы ведете речь о "красоте", то в рамках jQuery сделать это просто и без всякого плагина.
Речь ведь не о том, что плохо подключать нечто. Плохо то, что часть подключаемого дублируется еще чем либо подключаемым. | |
|
|
|
|
|
|
|
для: confirm
(18.07.2014 в 17:27)
| | К тому же менеджер может написать дату вот так "1 июля 2014", тут точно strtotime не спасает :) | |
|
|
|
|
|
|
|
для: antf
(18.07.2014 в 17:34)
| | >К тому же менеджер может написать дату вот так "1 июля 2014"
Может, а может написать и "от рождества Христова". Но вы ведь пишите, что есть формат ввода, а значит проверяется по этому формату, и другого формата вы не принимаете, так или нет? Иначе начерта вам плагин и причем тут "__-__-____"?
strtotime на этот формат ответит false, чего с учетом вашего "__-__-____" как раз и требуется. Иначе вы задаете вопрос, подноготная которого спрятана в черном ящике. | |
|
|
|
|
|
|
|
для: antf
(18.07.2014 в 02:35)
| | Антон, объясните мне как так получается. Когда я пришёл на форум, у вас уже была своя CMS. Но года полтора назад вы стали задавать на столько странные вопросы, что у меня даже мыслей никаких не укладывается в голове.
Пример с php.net
<?php
function validateDate($date, $format = 'Y-m-d H:i:s')
{
$d = DateTime::createFromFormat($format, $date);
return $d && $d->format($format) == $date;
}
var_dump(validateDate('2012-02-28 12:12:12')); # true
var_dump(validateDate('2012-02-30 12:12:12')); # false
var_dump(validateDate('2012-02-28', 'Y-m-d')); # true
var_dump(validateDate('28/02/2012', 'd/m/Y')); # true
var_dump(validateDate('30/02/2012', 'd/m/Y')); # false
var_dump(validateDate('14:50', 'H:i')); # true
var_dump(validateDate('14:77', 'H:i')); # false
var_dump(validateDate(14, 'H')); # true
var_dump(validateDate('14', 'H')); # true
var_dump(validateDate('2012-02-28T12:12:12+02:00', 'Y-m-d\TH:i:sP')); # true
# or
var_dump(validateDate('2012-02-28T12:12:12+02:00', DateTime::ATOM)); # true
var_dump(validateDate('Tue, 28 Feb 2012 12:12:12 +0200', 'D, d M Y H:i:s O')); # true
# or
var_dump(validateDate('Tue, 28 Feb 2012 12:12:12 +0200', DateTime::RSS)); # true
var_dump(validateDate('Tue, 27 Feb 2012 12:12:12 +0200', DateTime::RSS)); # false
?>
|
| |
|
|
|
|
|
|
|
для: Valick
(18.07.2014 в 10:11)
| | На данном этапе. Я практик. Вижу задачу. Пробую решить сам или гуглю. Не удается погуглить или решить самому - спрашиваю. Формулирую вопрос, чтобы знающие люди ответили за несколько секунд. Здесь такой случай.
>Антон, объясните мне как так получается. Когда я пришёл на форум, у вас уже была своя CMS. Но года полтора назад вы стали задавать на столько странные вопросы, что у меня даже мыслей никаких не укладывается в голове.
Т.е. почему я не знаю web-технологии на уровне cheops'а, Trianon'а, confirm'а, других отвечающих (кто там еще продвинулся?), хотя программирую с 2004? С октября 2012 года я серьезно заболел. Подробнее на моей страничке Вконтакте и по ссылкам (там совсем немного). В последнее время очень сложно сосредоточиться. С октября 2012 года я прочитал всего 2 книги - роман Гюго Отверженные (1000 страниц печатного текста) и самоучитель php от Softtime. Попытки чтения системных книг по JavaScript провалились. Даже в игры играть сложно! Не чувствуешь прежнего удовольствия. Все делаешь из-под палки. Пока сил хватает только на работу и то делаю это в пол-силы. Я хотел бросить совсем программирование после того, как заболел, начальству стоило огромных усилий меня удержать. Зубами цепляюсь за то, что есть, надеюсь идти дальше, иначе инвалидность (мне ее пока не дают, потомучто я работаю). | |
|
|
|
|
|
|
|
для: antf
(18.07.2014 в 12:29)
| | Ваш вопрос не столько о технологиях, сколь о конкретном типе данных. А уж с этим типом данных у языка точно будет инструментарий. Остается только заглянуть в руководство. Пример выше из руководства, это удобный набор классов как раз для работы с датой, вот только заметил одну странность - говоришь об этом наборе, но как об стенку горохом, то-ли боязнь, то-ли еще чего. Хотя ничего запредельного там нет, достаточно раз вникнуть и знать о существовании.
Ну если такое страшно, то и среди процедурного достаточно функций. | |
|
|
|
|
|
|
|
для: Valick
(18.07.2014 в 10:11)
| | А что такого я спросил? Мои темы на этих форумах, исключая форум Разное, по пальцам можно пересчитать с октября 2012. См поиск по нику antf в тематических форумах. Вроде там нет ничего крамольного. Вот отвечать - да, у меня не получается. | |
|
|
|
|
|
|
|
для: antf
(18.07.2014 в 02:35)
| | Если всё так критично: поставьте для поля ввода readonly и повесьте на него любой JavaScript календарь, чтобы ваш формат никто не нарушил). Либо допилите ваш плагин для масок. | |
|
|
|