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

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

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

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

а что 3 условия сложно написать ?
Да нет условий поболее
например 29.02.1900 - быть не могет
а 29.02.2000 могет, а уж если учитавать перход с юлианского на григорианский, вообще попухнуть можно
...
Рейтинг: 0 / 0
10.04.2007, 11:50
    #34449473
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить дату на верность ? C++ Builder
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
10.04.2007, 12:08
    #34449546
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить дату на верность ? C++ Builder
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
10.04.2007, 12:19
    #34449588
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить дату на верность ? C++ Builder
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
10.04.2007, 12:50
    #34449717
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить дату на верность ? C++ Builder
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
10.04.2007, 13:09
    #34449773
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить дату на верность ? C++ Builder
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
11.04.2007, 12:16
    #34452331
Begem0t!k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить дату на верность ? C++ Builder
iiyamaМожно проверить с помощью StrToDateTimeDef



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


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