![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли програмно сравнить две даты? [D7]
KostR © (2005-11-12 16:10:00)Здравствуйте. Проблема в следующем. Мне надо, например, сегодняшнюю дату (12.11.2005) програмно сравнить с другими датами (10.05.2005, 10.07.2003 и т.п.). И если дата хотябы на два месяца младше сегодняшней ее нужно вывести в label1.caption. Как их сравнить? Если бы это были числа, то без проблем, а так нужна помощь специалиста. Спасибо.
gdaujk (2005-11-13 05:52:00) [1]Savek (12.11.05 16:32) [5]
Хотя если учитывать кол-во дней в месяце, то надо подумать
В TryEncodeDate, использующейся и в EncodeDate и в StrToDate, это учтено. Дата, насколько я понимаю, представляется как число дней от рождества Христова, с учётом високосных годов и разницы числа дней в месяцах.
Время переводится в милисекунды и делится на число миллисекунд в сутках. Получается дробная часть числа.
KostR (12.11.05 16:10)
Мне надо, например, сегодняшнюю дату (12.11.2005) програмно сравнить с другими датами
В данном конкретном случае, по-моему, лучше ручками сравнить сначала годы, если они равны, сравнивать месяцы. Это лучше, чем использовать StrToDate и EncodeDate.
Eraser (2005-11-12 22:45:00) [2]
> KostR (12.11.05 16:10)
1. Переводишь даты в TDateTime с пом. ф-ии EncodeDate или StrToDate.
2. [1]
Udaff (2005-11-12 21:23:00) [3]для расшивровки TDate есть наскоко помню функции типа DecodeDate. для времени если нужно аналогичные тоже есть. справку в зубы и вперед
Savek (2005-11-12 16:32:00) [4]TDateTime это действительно число!
Переменные этого типа можно складывать, отнимать, +/- к ним константы
if Date-Date1>60 then Label.Caption:=DateToStr(Date1)
Хотя если учитывать кол-во дней в месяце, то надо подумать
А вообще ф-ии для работы с датами смотри в модуле DateUtils
Piter (2005-11-12 16:30:00) [5]Sergey Masloff (12.11.05 16:24) [1]
А даты это и есть числа
когда они в формате TDateTime.
А для перевода текстовой даты в TDateTime есть разнообразнейшие функции, типа StrToDateTime (или как-то так).
Плохиш (2005-11-12 16:29:00) [6]MonthBetween
SergP (2005-11-12 16:28:00) [7]if trunc(date1)=trunc(date2) then ....
Sergey Masloff (2005-11-12 16:24:00) [8]А даты это и есть числа. Целая часть - день дробная - время.