Найти тему

Автоисправление и автодозаполнение дат

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

Стандартная дата для ввода )))
Стандартная дата для ввода )))

Ниже я привел, на мой взгляд, простейшие алгоритмы автоисправления и автодозаполнения при вводе значения в поле формата "Дата", которые позволяют пользователю избежать многих опечаток, а системе интуитивно понять какую дату он хочет ввести.

Алгоритмы написаны для стандартного формата: dd.mm.yyyy

  1. Первая и вторая введенные цифры не могут составлять вместе как двухзначное число менее 1 или более 31.
    Если в первый и второй символ вводится число 00, то автоматически исправлять его на 01.
    Если в первый и второй символ вводится число более 31, то автоматически исправлять его на 31.
    Если в первый и второй символ вводится число 29, 30 или 31, и далее пользователем или системой в поле вводится его месяц (в случае с февралем - месяц-год), в котором в соответствии с календарем нет введенного числа, то автоматически исправлять его на максимальное число этого месяца (в случае с февралем - месяца-года).
  2. Третья и четвертая введенные цифры не могут составлять вместе как двухзначное число менее 1 или более 12.
    Если в третий и четвертый символ вводится число 00, то автоматически исправлять его на 01.
    Если в третий и четвертый вводится число более 12, то автоматически исправлять его на 12.
  3. Если в пустое поле был наведен курсор и далее сразу было нажато Enter или Tab или сразу курсор был выведен из поля, то автоматически заполнять поле текущей датой.
  4. Если в поле был наведен курсор, далее в поле был введен только 0 и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим 1, с текущим месяцем и текущим годом.
  5. Если в поле был наведен курсор, далее в поле была введена только одна цифра, отличная от нуля, и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенной цифре, с текущим месяцем и текущим годом.
  6. Если в поле был наведен курсор, далее в поле было введено только две цифры и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным цифрам как двузначному числу, с текущим месяцем и текущим годом.
  7. Если в поле был наведен курсор, далее в поле было введено только три цифры, где третья цифра 0, и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с текущим месяцем и текущим годом.
  8. Если в поле был наведен курсор, далее в поле было введено только три цифры, где третья цифра отлична от нуля, и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенной третьей цифре, и текущим годом.
  9. Если в поле был наведен курсор, далее в поле было введено только четыре цифры и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и текущим годом.
  10. Если в поле был наведен курсор, далее в поле было введено только пять цифр и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и годом, соответствующим введенной пятой цифре и увеличенным на 2000.
  11. Если в поле был наведен курсор, далее в поле было введено только шесть цифр и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и годом, соответствующим введенным пятой и шестой цифрам как двузначному числу и увеличенным на 2000.
  12. Если в поле был наведен курсор, далее в поле было введено только семь цифр и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и годом, соответствующим введенным пятой, шестой и седьмой цифрам как трехзначному числу и увеличенным на 2000.
  13. Если в поле был наведен курсор, далее в поле было введено восемь цифр, последние четыре из которых нули, и далее сразу было нажато Enter или Tab или курсор был выведен из поля, то автоматически заполнять поле датой с днем, соответствующим введенным первым двум цифрам как двузначному числу, с месяцем, соответствующим введенным третьей и четвертой цифрам как двузначному числу, и текущим годом.
  14. В перечисленных алгоритмах автоисправление всегда исполняется первичнее автодозаполнения.
  15. Примеры автоисправлений и автодозаполнений:
Автоисправление дат
Автоисправление дат
Автодозаполнение дат
Автодозаполнение дат

Если понравилось - смело внедряйте в код. Пользователь будет вам благодарен.
Если есть замечания или дополнения - пишите в комментариях.