Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.01.2009, 22:14
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание Сравнение даты - это возможно??

Столкнулся с такой проблемой - надо стравнить ДАТЫ между собою - чтоб определить день прошол или нет

Есть основная дата 01.25.2009 с которой надо стравнить остальные
вот эти

01.20.2008
05.08.2008
02.11.2009
03.06.2009
02.06.2009
01.24.2009
01.20.2009


если дата сходиться с основной(01.25.2009) или уже прошла(типа 01.20.2008 дата уже прошла - сегодняшняя дата 01.25.2009) то добавить равные и прошедщие даты в MEMO

такое возможно сделать ?
Ответить с цитированием
  #2  
Старый 30.01.2009, 22:33
Аватар для Sharky
Sharky Sharky вне форума
Активный
 
Регистрация: 20.03.2007
Сообщения: 202
Репутация: 10
По умолчанию лехкотня

извлеки и своих дат число месяц и год а дальше сравнивай сначала год потом месяц потом число
если год больше значит дата старше
если меньше значит младше
если равен сравнить месяц и тут повторяется то что выше
Ответить с цитированием
  #3  
Старый 30.01.2009, 22:49
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

есть исходник - как это реализовать? заранеее благодарю
Ответить с цитированием
  #4  
Старый 30.01.2009, 23:15
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

Цитата:
Сообщение от Sharky
извлеки и своих дат число месяц и год а дальше сравнивай сначала год потом месяц потом число
если год больше значит дата старше
если меньше значит младше
если равен сравнить месяц и тут повторяется то что выше

неправильно... сначала число, потом месяц, потом год...
Ответить с цитированием
  #5  
Старый 30.01.2009, 23:27
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Не, вы все в натуре издеваетесь!!!
Дата (тип TDateTime) - это число с фиксированной точкой, где в целой части хранится кол-во дней от некой "нулеваой" даты, а в дробной части - кол-во секунд от начала указанного дня. Поэтому оно:
1. Поддается обрезанию по времени (с помощью Int, например)
2. Успешно сравнивается обычным способом.

Напиши как у тебя хранятся эти даты.
Ответить с цитированием
  #6  
Старый 31.01.2009, 00:01
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
По умолчанию

Вот положил исходник того что я хочу сделать - наверно так попонятнее
Вложения
Тип файла: rar Project.rar (2.6 Кбайт, 35 просмотров)
Ответить с цитированием
  #7  
Старый 31.01.2009, 00:07
GraffyM GraffyM вне форума
Прохожий
 
Регистрация: 28.01.2009
Сообщения: 46
Репутация: 10
По умолчанию

Цитата:
Сообщение от ApplicatiOn
неправильно... сначала число, потом месяц, потом год...
Ха-хА =) прежде чем чтото говорить подумай =). А по сути хз я ненаю как это сделать нуно посидеть помозговать. Ну я бы сделал как сказал Sharky
Ответить с цитированием
  #8  
Старый 31.01.2009, 00:25
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

Цитата:
Сообщение от GraffyM
Ха-хА =) прежде чем чтото говорить подумай =). А по сути хз я ненаю как это сделать нуно посидеть помозговать. Ну я бы сделал как сказал Sharky

ну давай рассмотрим пример:

это исходные:
12.10.1990
09.12.1984
15.01.1000

сортируем по году первым, получаем:

15.01.1000
09.12.1984
12.10.1990

далее сортируем по месяцу:
15.01.1000
12.10.1990
09.12.1984

а теперь, по числу:

09.12.1984
12.10.1990
15.01.1000

и что за нахер? (извиняюсь за грубость). 15.01.1000 старше чем остальные даты?

так что вот сами внимательно подумайте, и включите вашу голову...
Ответить с цитированием
  #9  
Старый 31.01.2009, 03:12
Аватар для Sharky
Sharky Sharky вне форума
Активный
 
Регистрация: 20.03.2007
Сообщения: 202
Репутация: 10
По умолчанию Да и

TdateTime можно вычитать и следовательно сравнивать
Ответить с цитированием
  #10  
Старый 31.01.2009, 09:38
Аватар для :S.p.a.m.
:S.p.a.m. :S.p.a.m. вне форума
Активный
 
Регистрация: 04.05.2008
Сообщения: 260
Репутация: 15
По умолчанию

Подтверждаю!! Зачем извращаться если есть специальные типы TDate, TTime...?
Ответить с цитированием
  #11  
Старый 31.01.2009, 09:57
ApplicatiOn ApplicatiOn вне форума
Активный
 
Регистрация: 28.02.2008
Сообщения: 388
Репутация: -10
По умолчанию

Цитата:
Сообщение от :S.p.a.m.
Подтверждаю!! Зачем извращаться если есть специальные типы TDate, TTime...?


естественно..
Ответить с цитированием
  #12  
Старый 31.01.2009, 11:06
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Мне надо сравнить все потому что года может быть одинаковыми месяца разные - и можть быть что год и месяц одинаково но дни разные - просто я для примера поставил эти даты

Ну кто нить выложите код пожалуста - что у вас получился ...
Ответить с цитированием
  #13  
Старый 31.01.2009, 12:46
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Что-то я не пойму, а что CompareDate, CompareTime, CompareDateTime и т.д. уже отменили?
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #14  
Старый 31.01.2009, 22:06
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

просто использовав strtodate добилься нужного результата - я просто сравнивал строки вместо даты - все получился всем спасибо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025