Форум: "Потрепаться";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизПоиск наиближнего времени к текущему из списка Найти похожие ветки
← →
__DATA__ (2005-09-22 13:17) [0]Есть список :
09:00
15:00
18:00
21:00
00:00
03:00
06:00
Текущее время скажем 22:30. Как найти время из списка, наиболее близкое к 22:300, тоесть как найти 00:00?
← →
КаПиБаРа © (2005-09-22 13:21) [1]1. Написать функцию определяющую разность двух времен.
2. Найти минимальную разность между данным временем и всеми временами из массива.
← →
__DATA__ (2005-09-22 13:23) [2]Я написал :
function FindShotTime(Times: TStringList; Time: TDateTime): String;
var
i: Integer;
t,t2: TDateTime;
begin
t := 999999999999;
Time := StrToDateTime(FormatDateTime("01.01.2005 hh:mm",Time));
for i := 0 to Times.Count-1 do
begin
t2 := StrToDateTime(FormatDateTime("01.01.2005 hh:mm",StrToDateTime(Times.Strings[i])));
if (Time-t2) < t then
begin
Result := DateTimeToStr(t2);
t := (Time-t2);
if t < 0 then
t := t*(-1);
end;
end;
end;
Только что делать с переходом да следуюший день?
← →
Prohodil Mimo © (2005-09-22 13:23) [3]Что то наподобие пузырьковой сортировки
← →
Prohodil Mimo © (2005-09-22 13:26) [4]Если нет дат, то врят ли получится.
Или список всё-таки упорядочен по времени?
← →
Prohodil Mimo © (2005-09-22 13:27) [5]__DATA__ (22.09.05 13:17)
время день
09:00 1
15:00 1
18:00 1
21:00 1
00:00 2
03:00 2
06:00 2
так?
← →
__DATA__ (2005-09-22 13:28) [6]
> [4] Prohodil Mimo © (22.09.05 13:26)
> Если нет дат, то врят ли получится.
Нет, ничего невозможного! Я уверен что можно, только че-то сообразить немогу ...
> Или список всё-таки упорядочен по времени?
Нет, список не упорядочен
← →
DelphiN! © (2005-09-22 13:31) [7]
> [5] Prohodil Mimo © (22.09.05 13:27)
Так, только записи могут идти совершенно не в этом порядке, например :
06:00 2
15:00 1
00:00 2
18:00 1
09:00 1
21:00 1
03:00 2
← →
КаПиБаРа © (2005-09-22 13:32) [8]КаПиБаРа © (22.09.05 13:21) [1]
1.1. Написать функцию StrToDt перевода времени из строкового формата 22:30 в формат TDateTime
1.2. Написать функцию определения разности
A(D, TimeFromMassiv: TDateTime): Double;
begin
Result := Min(Abs(D-TimeFromMassiv), Abs(D-TimeFromMassiv+1))
end;
← →
DelphiN! © (2005-09-22 13:39) [9][8] КаПиБаРа © (22.09.05 13:32)
ага, вот что получится :
function FindShotTime(Times: TStringList; Time: TDateTime): String;
var
i: Integer;
t,t2: TDateTime;
begin
t := 999999999999;
Time := StrToDateTime(FormatDateTime("01.01.2005 hh:mm",Time));
for i := 0 to Times.Count-1 do
begin
t2 := StrToDateTime(FormatDateTime("01.01.2005 hh:mm",StrToDateTime(Times.Strings[i])));
if Min(Abs(Time-t2), Abs(Time-(t2+1))) < t then
begin
Result := DateTimeToStr(t2);
t := (Time-t2);
if t < 0 then
t := t*(-1);
end;
end;
end;
← →
Prohodil Mimo © (2005-09-22 13:41) [10]__DATA__ (22.09.05 13:28) [6]
Нет, ничего невозможного!
согласен. Но... ещё раз спрашиваю : тебе известно только время или дата? если дата не известна, то как ты определишь что 10:00 были вчера, а не сегодня?
← →
__DATA__ (2005-09-22 13:44) [11][10] Prohodil Mimo © (22.09.05 13:41)
Извесно только время.
Мне всеравно вчера это или сегодня, главное чтобы найти наиболее близкую точку к текущему времени, а найти так :
> [9] DelphiN! © (22.09.05 13:39)
← →
raymond © (2005-09-22 14:49) [12]
> КаПиБаРа © (22.09.05 13:21) [1]
>
> 1. Написать функцию определяющую разность двух времен.
> 2. Найти минимальную разность между данным временем и всеми
> временами из массива.
Согласен
← →
Prohodil Mimo © (2005-09-22 14:56) [13]__DATA__ (22.09.05 13:44) [11]
Извесно только время.
Мне всеравно вчера это или сегодня
тогда не понятен смысл приведения к DateTime,
а так же к чему был вопрос
> Только что делать с переходом да следуюший день?
← →
isasa © (2005-09-22 15:55) [14]> Только что делать с переходом да следуюший день?
Учесть, что
24:00==00:00
← →
esu © (2005-09-22 17:32) [15]IMHO приводить к TDateTime смысла нет. Быстрее будет притвориться integer и сравнивать 2100 с 2330 ну и далее по списку :)
← →
esu © (2005-09-22 17:33) [16]сорри торможу ;)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.039 c