|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.08.2009, 16:14 | #1 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Вычислить разницу между датами без учета года
Здравствуйте! Помогите в решении проблемы: есть дата, например 24.10.1994 типа TDateTime. Нужно вычислить число дней от сегодняшней даты до этой без учета года. Например: сегодня 20.08.2009, результат бы был 65 дней. Но если сегодня было бы 26.10.2009, ответ был бы не -2, а, учитывая что такое число будет только в след. году, кол-во дней до него.
В принципе, алгоритм я смогу сам сделать, только подскажите, как считать без учета года? |
20.08.2009, 16:38 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
20.08.2009, 17:26 | #3 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Ну без разницы, считается что событие происходит каждый год, то есть между 24.10.1999 и 25.10.2029 - 1 день
|
20.08.2009, 17:40 | #4 |
Форумчанин
Регистрация: 08.07.2009
Сообщений: 246
|
Идея примерно такая нужно из даты вытащить день и месяц.
Код прилагается ну это не лучшее решение но какое есть. Код:
Например, сегодня 20.08.2009 считаем от 29.07.2009 должны получить 22 дня. Задаем массив в котором первое значение месяц второе сколько дней в месяце. Далее нужно отнять от этого количество то с какой даты считать (31для июля -29 искомая получим 2) затем берем и складываем 2 плюс число дней в этого месяца 20 получаем результат. Если несколько месяцев то нужно будет просматривать из массива и количество дней в том месяце. Прости может ты найдешь Проше вариант я не давно в делфи но программировал в другом языке, там идея подобная но без массива. ___________________________________ __________________________ Если я вам помог, добавьте отзыв '+' я буду благодарен ( иконка весов в углу!!!)
Да прибудет с Вами свет и радость!!!
|
20.08.2009, 17:43 | #5 |
Форумчанин
Регистрация: 08.07.2009
Сообщений: 246
|
Ну в вашем случае не учитывайте Year
Да прибудет с Вами свет и радость!!!
|
20.08.2009, 17:56 | #6 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
Вообще о программе: она напоминает о дне рожденья или другом празднике в нужный день, значения хранятся в БД.
Так вот я подумал, а что если в начале каждого года переделывать год всех дат в БД на новый. Тогда все будет работать! Но вопрос: как изменить год в дате? Можно например вывести его с помощью DecodeDate, прибавить 1 и... А как собрать обратно в TDateTime? |
20.08.2009, 18:03 | #7 |
Форумчанин
Регистрация: 08.07.2009
Сообщений: 246
|
Ну а зачем усложнять то??? Введите даты и ФИО именинника в StringGrid например и сохраните их в файл. Программа при открытие сразу должна читать этот файл потом проходит и проверяет даты с текущей только без года. И выводит в свободном месте сколько дней до дня рождения.
Удачи вам. Дату можно хранить как строку только проверяйте правильно ли ее набрали.
Да прибудет с Вами свет и радость!!!
|
20.08.2009, 18:04 | #8 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
function EncodeDate(Year, Month, Day: Word): TDateTime;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
20.08.2009, 18:15 | #9 |
ACM!
Форумчанин
Регистрация: 19.06.2009
Сообщений: 382
|
2Пепел Феникса: Спасибо!
2S_Yevgeniy: Во-первых, с базой данных удобней, во-вторых, это еще вопрос, что легче - мучаться со сравнениями или просто прибавлять 1 раз в год! |
20.08.2009, 18:23 | #10 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Код:
вернет true если день и месяц совпадают Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 20.08.2009 в 18:59. Причина: сказал функа а написал процедурку...исправил |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разница между датами в месяцах | Andre1723 | SQL, базы данных | 1 | 21.06.2009 17:53 |
выборка между двумя датами | UnChanter | БД в Delphi | 1 | 30.03.2009 21:09 |
Разница между датами | kykysya | Общие вопросы Delphi | 8 | 26.03.2009 18:22 |
С++: найти число дней между 2 датами | kissel | Помощь студентам | 2 | 15.03.2009 17:18 |
Разница между датами | deenka | БД в Delphi | 3 | 31.01.2008 13:21 |