powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как проверить дату на верность ? C++ Builder
11 сообщений из 11, страница 1 из 1
Как проверить дату на верность ? C++ Builder
    #34445634
Begem0t!k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например ввожу 12.01.2001 - верно
12.13.2005 или _1.12.2002 - не верно
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34446595
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИМХО если попытаться вызвать конструктор

TDateTime(unsigned short year, unsigned short month, unsigned short day)

при некорректной дате будет исключение. Вроде бы так следует из хелпа, попробовать недолго.
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34448137
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно проверить с помощью StrToDateTimeDef
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34448317
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Begem0t!kНапример ввожу 12.01.2001 - верно
12.13.2005 или _1.12.2002 - не верно

а что 3 условия сложно написать ?
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34448371
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsik Begem0t!kНапример ввожу 12.01.2001 - верно
12.13.2005 или _1.12.2002 - не верно

а что 3 условия сложно написать ?
Да нет условий поболее
например 29.02.1900 - быть не могет
а 29.02.2000 могет, а уж если учитавать перход с юлианского на григорианский, вообще попухнуть можно
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34449473
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Begem0t!kНапример ввожу 12.01.2001 - верно
12.13.2005 или _1.12.2002 - не верно


С через mktime получить time_t (Если в mktime передать 40 октября , она вернет 9 ноября)
потом его обратно преобразовать через gm_time в tm.
Сравнить две структуры tm.

Если mktime вернет -1 - дата неверная изначально.
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34449546
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- Begem0t!kНапример ввожу 12.01.2001 - верно
12.13.2005 или _1.12.2002 - не верно


С через mktime получить time_t (Если в mktime передать 40 октября , она вернет 9 ноября)
потом его обратно преобразовать через gm_time в tm.
Сравнить две структуры tm.

Если mktime вернет -1 - дата неверная изначально.
Мда совет. Тогда уж пусть boost берет
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34449588
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- Begem0t!kНапример ввожу 12.01.2001 - верно
12.13.2005 или _1.12.2002 - не верно


С через mktime получить time_t (Если в mktime передать 40 октября , она вернет 9 ноября)
потом его обратно преобразовать через gm_time в tm.
Сравнить две структуры tm.

Если mktime вернет -1 - дата неверная изначально.

mktime берет только от 1970-го до 2037-го. Тут в топике аж 1900 вспоминали :)
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34449717
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh onstat- Begem0t!kНапример ввожу 12.01.2001 - верно
12.13.2005 или _1.12.2002 - не верно


С через mktime получить time_t (Если в mktime передать 40 октября , она вернет 9 ноября)
потом его обратно преобразовать через gm_time в tm.
Сравнить две структуры tm.

Если mktime вернет -1 - дата неверная изначально.

mktime берет только от 1970-го до 2037-го. Тут в топике аж 1900 вспоминали :)

man mktime
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
The members of the tm structure are:
....................................................................
tm_year The number of years since 1900.
........................................................................
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34449773
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat- Akh onstat- Begem0t!kНапример ввожу 12.01.2001 - верно
12.13.2005 или _1.12.2002 - не верно


С через mktime получить time_t (Если в mktime передать 40 октября , она вернет 9 ноября)
потом его обратно преобразовать через gm_time в tm.
Сравнить две структуры tm.

Если mktime вернет -1 - дата неверная изначально.

mktime берет только от 1970-го до 2037-го. Тут в топике аж 1900 вспоминали :)

man mktime
struct tm {
int tm_sec; /* seconds */
int tm_min; /* minutes */
int tm_hour; /* hours */
int tm_mday; /* day of the month */
int tm_mon; /* month */
int tm_year; /* year */
int tm_wday; /* day of the week */
int tm_yday; /* day in the year */
int tm_isdst; /* daylight saving time */
};
The members of the tm structure are:
....................................................................
tm_year The number of years since 1900.
........................................................................


Ес ит из. Только вот считает, все равно с 1970.
...
Рейтинг: 0 / 0
Как проверить дату на верность ? C++ Builder
    #34452331
Begem0t!k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iiyamaМожно проверить с помощью StrToDateTimeDef



Спасибо всем за обсуждение !!! Но вот это самый простой и Рульный метод !
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как проверить дату на верность ? C++ Builder
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]