Это двойной вопрос с точки зрения удобства использования интерфейса и проверки PHP DATE_TIME.
Я работаю над сайтом для клиента, который хотел бы добавить дату, когда он закончил проект (чтобы проекты могли быть перечислены в этом порядке). Он будет единственным, кто использует интерфейс администратора, поэтому я бы хотел, чтобы он был максимально простым.
Я храню даты как DATE_TIME в базе данных SQLite.
Я бы хотел потребовать, чтобы клиент ввел хотя бы год и месяц , с возможностью добавления дня, часа, минуты и секунды к DATE_TIME. Если они не установлены, по умолчанию будет использоваться наименьшее число.
Я подумал, что лучший и самый простой способ сделать это - создать одну форму ввода, в которой будет ввод (слева) и результат (справа). Заставить его использовать в качестве формата xxxx / xx / xx / xx / xx / xx.
2009/08 = 2009-08-01 00:00:01
2009/08/01 = 2009-08-01 00:00:01
2009/08/01/05 = 2009-08-01 05:00:01
(по умолчанию добавляется одна секунда, в противном случае это будет днем ранее)
Сначала я попытался разобрать входные данные в массив и проверить каждую секцию дат с помощью регулярного выражения. он очень быстро запутался, и я не могу понять, как проверить правильные диапазоны, скажем, / [1980-2009] / или / [01-12] / (это не работает, как я ожидал). Также / [(0-9) {2}] / явно не будет работать в течение месяца.
Другой вариант - сделать каждый раздел дат отдельным полем выбора. Делая каждое поле после месяца необязательным. Но это приводит к путанице в выводе html, также учитывая, что в каждом месяце нет 31 дня, мне понадобится некоторый javascript для изменения поля дня в зависимости от того, какой месяц выбран. Это слишком много. Также кажется, что намного проще и быстрее использовать одно поле.
Как вы думаете, ребята, лучший способ ввода и проверки пользовательских дат?