Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Функция CDate()

2.0K
23 января 2005 года
MNikolay
16 / / 20.12.2002
Суть дела такова, мне необходимо проверка данных одного поля вводимых пользователем - дата. Попробовал через CDate(), путём получения ошибки в случае не корректного ввода, но был приятно удивлён: если дать этой функции допустим значение "12.23.2005", то оно с лёгкостью будет преобразовано в дату - "23.12.2005". Как можно обойти это преобразование?

Спасибо.
405
24 января 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by MNikolay
Суть дела такова, мне необходимо проверка данных одного поля вводимых пользователем - дата. Попробовал через CDate(), путём получения ошибки в случае не корректного ввода, но был приятно удивлён: если дать этой функции допустим значение "12.23.2005", то оно с лёгкостью будет преобразовано в дату - "23.12.2005". Как можно обойти это преобразование?

Спасибо.



Вероятно, обойти указанное Вами преобразование нельзя. Судите сами, какая дата задана строкой "02.03.2005": 2 марта или 3 февраля? Здесь интерпретация будет зависеть от системных настроек формата даты. Если он описан как "dd.mm.yyyy", то будет 2 марта, если - как "mm.dd.yyyy", то будет 3 февраля.
Думаю, для проверки корректности ввода даты лучше пользоваться функцией IsDate(). Она, конечно, интерпретирует дату по той же схеме, но заведомо "отсечет" все некорректные записи, например, "32.02.2005".

258
24 января 2005 года
SergeySV
1.5K / / 19.03.2003
На счет переворачивания 12.23 на 23.12, тут к сожалению ни одна из системных функций явно не поможет, надо писать самому.

Например есть функция DateSerial(Year As Integer, Month As Integer, Day As Integer), соотв. для нее надо нарезать самост. день, месяц и год. Если допустим формат строго определен - "dd.mm.yyyy", то делаем код вырез. по порядку эти числа до символов - ".", "/", потом их в CInt() и в DateSerial, если числа будут неправильные, то DateSerial вернет 0 (в date формате конечно, т.е. 190..год)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог