Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];

Вниз

количество дней   Найти похожие ветки 

 
Антон Шестаков   (2007-10-11 14:35) [0]

Как подсчитать количество дней между двумя датами DateTimePicker1 и DateTimePicker2. А результат выводился в label


 
Dib@zol ©   (2007-10-11 14:37) [1]

DecodeDateTime???


 
Sergey13 ©   (2007-10-11 14:37) [2]

Разница находится вычитанием.


 
Dib@zol ©   (2007-10-11 14:39) [3]

> Разница находится вычитанием.

Гениально. Лейбниц лопнул от зависти. .)))

DecodeDate(DateTimePicker1.Date) а там разберёшься.


 
Dennis I. Komarov ©   (2007-10-11 14:40) [4]

> [0] Антон Шестаков   (11.10.07 14:35)

Для этого надо предсавлять, что есть TDateTime. И F1 тебе в помощь.


 
Плохиш ©   (2007-10-11 14:42) [5]


> Dib@zol ©   (11.10.07 14:39) [3]

Рекомендую прочитать [4] много-много раз до прояснениия...


 
Dib@zol ©   (2007-10-11 14:45) [6]

> [5] Плохиш ©   (11.10.07 14:42)

Предлагаю не предлагать мне всякого разного. Есть ведь _SYSTEMTIME, а поэтому мне никакой TDateTime не зафик. ;D


 
Ega23 ©   (2007-10-11 14:45) [7]


> Dib@zol ©   (11.10.07 14:39) [3]
>
> > Разница находится вычитанием.
>
> Гениально. Лейбниц лопнул от зависти. .)))
>
> DecodeDate(DateTimePicker1.Date) а там разберёшься.


Может сначала ознакомишься с типом TDateTime?
А то появляются, понимаешь, шедевры:


function TfmMain.IncDay(const DateTime: TDateTime;  NumberOfDays: Integer): TDateTime;
{Функция предназначена для изменения даты (DateTime) путем добавления  количества дней (NumberOfDays). Значение NumberOfDays может быть отрицательным.}
var
 Y, M, D, CountDays: Word;
 N: Integer;
 Sign, NoBreak: Boolean;
begin
 Sign := NumberOfDays >= 0;
 DecodeDate(DateTime, Y, M, D);
 N := NumberOfDays;
 NoBreak := True;
 if Sign then   //Прибавить
 begin
   while(NoBreak) do
   begin //Количество дней в месяце
     CountDays := MonthDays[IsLeapYear(Y), M];
     if (N + D) <= CountDays then //Если в пределах данного месяца
     begin
       Inc(D, N);
       NoBreak := False;
     end
     else
     begin
       if M < 12 then
         Inc(M, 1)
       else
       begin
         M := 1;
         Inc(Y, 1);
       end;
       N := N - (CountDays - D);
       D := 0;
     end;
   end;
 end
 else  //Отнять
 begin
   N := -N;
   while(NoBreak) do
   begin
     if D > N then  //Если в пределах данного месяца
     begin
       Dec(D, N);
       NoBreak := False;
     end
     else
     begin
       if M > 1 then
         Dec(M, 1)
       else
       begin
         M := 12;
         Dec(Y, 1);
       end;
       //Количество дней в месяце
       CountDays := MonthDays[IsLeapYear(Y), M];
       N := N - D;
       D := CountDays;
     end;
   end;  
 end;
 Result := EncodeDate(Y, M, D);
 //Установить время из старой даты
 ReplaceTime(Result, DateTime);
end;


 
Ega23 ©   (2007-10-11 14:45) [8]


> Предлагаю не предлагать мне всякого разного. Есть ведь _SYSTEMTIME,


В детский сад.


 
Dib@zol ©   (2007-10-11 14:47) [9]

> В детский сад.

Куда вам угодно. Можно и в детский сад.


 
Игорь Шевченко ©   (2007-10-11 14:47) [10]

Dib@zol ©   (11.10.07 14:45) [6]

Предлагаю не флудить. Могу посодействовать


 
Dib@zol ©   (2007-10-11 14:50) [11]

Вощем вот.

uses DateUtils + DaysBetween().


 
Германн ©   (2007-10-11 14:51) [12]


> Ega23 ©   (11.10.07 14:45) [7]

Не запылилась ещё вися на стенке :-)


 
Германн ©   (2007-10-11 14:52) [13]


> Dib@zol ©   (11.10.07 14:50) [11]

Дальше можешь не продолжать. Пока АП не подойдет.
:-)


 
Leonid Troyanovsky ©   (2007-10-11 14:54) [14]


> Ega23 ©   (11.10.07 14:45) [7]

> А то появляются, понимаешь, шедевры:

А копирайт чей?

--
Regards, LVT.


 
Ega23 ©   (2007-10-11 14:55) [15]


> Dib@zol ©   (11.10.07 14:50) [11]
>
> Вощем вот.
>
> uses DateUtils + DaysBetween().


Ты про TDateTime уже прочитал, или как?


 
Ping   (2007-10-11 14:58) [16]

Dib@zol ©   (11.10.07 14:50) [11]

А теперь посмотри исходник этой функции.


 
Плохиш ©   (2007-10-11 15:12) [17]


> Dib@zol ©   (11.10.07 14:45) [6]
> > [5] Плохиш ©   (11.10.07 14:42)
>
> Предлагаю не предлагать мне всякого разного. Есть ведь _SYSTEMTIME,
>  а поэтому мне никакой TDateTime не зафик

Т.е. категория "чайник" тебя уже не устраивает, полез в категорию "ламер"? Ну, ну, продолжай...


 
Dib@zol ©   (2007-10-11 15:54) [18]

function DaysBetween(ANow, AThen: TDateTime): Integer;
const T:Double=0.5;
asm
 FINIT;
 FLD ANow;
 FSUB AThen;
 FABS;
 FSUB T;
 FIST Result;
 FWAIT;
end;

Подойдёт?


 
Ega23 ©   (2007-10-11 16:07) [19]


> А копирайт чей?


Хоть убей 0 не помню. Функция появилась здесь году в 2003, то ли в Кладовке, то ли ещё где-то...
Я тогда на форум не ходил, только новости просматривал.
Долго смеялсо.
К ней ещё описание было, что-то типа:
"Я уже долгое время разрабатываю клиент-серверные приложиния в бухгалтерской сфере; пользовался функциями IncMonth(Year, Week), но очень не хватало функции IncDay. И вот..."   :)
А привычка копирайты в комментах указывать у меня гораздо позже появилась.
Так что автор сего опуса - неизвестен.


 
Palladin ©   (2007-10-11 16:08) [20]

(c) автор Автошемы - Dmitry.O

если мне не изменяет память


 
MBo ©   (2007-10-11 16:10) [21]

До кучи:


function Tomorrow: TDateTime;
begin
 Sleep(24*60*60*1000);
 Result := Now;
end;


 
Ega23 ©   (2007-10-11 16:14) [22]


> MBo ©   (11.10.07 16:10) [21]


КЛАСС!!!!!!!!!!!


 
Dib@zol ©   (2007-10-11 16:14) [23]

> [21] MBo ©   (11.10.07 16:10)
Весело :)

> [17] Плохиш ©   (11.10.07 15:12)
> Т.е. категория "чайник" тебя уже не устраивает, полез в
> категорию "ламер"?
???


 
Dib@zol ©   (2007-10-11 16:23) [24]

> [21] MBo ©   (11.10.07 16:10)

Это однако неправильная функция! В момент возвращения результата это будет уже Today а не Tomorrow :)))


 
Ega23 ©   (2007-10-11 16:27) [25]


> Dib@zol ©   (11.10.07 16:14) [23]


Попробую тебе объяснить.
Да, для своего возраста ты очень неплохо знаешь Delphi.
Но терпежа проверить свой ответ тебе не хватает.
С чем это связано - ну тут может быть масса причин, начиная от попытки заработать звание "Мастера" и желанием просто самоутвердиться среди коммьюнити.
Виноват в этом тупо возраст.
Просьба воспринять мой пост как обоснованную критику, а не "наезд". Задатки у тебя действительно весьма неплохие.


 
Ega23 ©   (2007-10-11 16:29) [26]

Да, вот ещё: Ламер - это тот, кто не просто не разбирается в вопросе, но ещё и пытается всем доказать свою правоту.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.047 c
3-1183014419
azamatufa
2007-06-28 11:06
2007.11.04
ADO SQL SUM(Field) - ошибка в IDE Access violation ... 1B041FC6


15-1191222209
AntiUser
2007-10-01 11:03
2007.11.04
Microsoft продлевает срок продажи Windows XP до 30 июня 2008 года


15-1190625381
Kolan
2007-09-24 13:16
2007.11.04
Почему поля в базах так часто называют по русски?


2-1191991361
DrAndrey
2007-10-10 08:42
2007.11.04
В контекстное меню проводника добавить свой пункт.


2-1192163293
Stud
2007-10-12 08:28
2007.11.04
Где найти алгоритм перебора?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский