Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.04;
Скачать: CL | DM;

Вниз

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

 
Антон Шестаков   (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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.021 c
2-1191875733
Vitek2
2007-10-09 00:35
2007.11.04
Что это такое?


2-1192267489
Kolan
2007-10-13 13:24
2007.11.04
XMLDocument, добавленые теги выводятся в одну строку...


2-1192098952
Антон Шестаков
2007-10-11 14:35
2007.11.04
количество дней


3-1182932266
zz 5
2007-06-27 12:17
2007.11.04
Использование алиасов при Backup, FB1.5


15-1190972708
Polevi
2007-09-28 13:45
2007.11.04
ftp.exe