Форум: "Начинающим";
Текущий архив: 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