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

Вниз

сравнение времени   Найти похожие ветки 

 
pavel_guzhanov ©   (2003-12-03 08:45) [0]

Здравствуйте!
У меня возник следующий вопрос. В программе надо проверить условие: Если системные дата/время больше например 23:00 текущей даты и меньше 01:30 следующего дня, то выполнить определенные действия. Подскажите пожалуйста, как это можно реализовать на Delphi


 
ЮЮ ©   (2003-12-03 09:08) [1]

> и меньше 01:30 следующего дня = ИСТИНА для любого времени СЕГОДНЯ

var Hour, Min, Sec, MSec: Word

DecodeTime(Time, Hour, Min, Sec, MSec);
if (Hour >= 23) or (Hour < 1) or (Hour = 1) and (Min < 30) then begin
//б..., чуть не проспал !!!
end;


 
Silver Alex ©   (2003-12-03 09:55) [2]

function IsPeriod(OnDate,FromDate,ToDate: TDateTime): Boolean;
begin
Result:=(OnDate>FromDate) and (OnDate<ToDate);
end;

if IsPeriod(Now,EncodeDateTime(2003,12,2,23,30,0,0), EncodeDateTime(2003,12,3,13,30,0,0)) then
ShowMessage("Hello");


 
Johnmen ©   (2003-12-03 10:10) [3]

Общее выражение:
( (vStart<vStop) and (vStart<=vNow) and (vNow<=vStop) ) or
( (vStart>=vStop) and ( (vStart<=vNow) or (vNow<=vStop) ) )

где vStart, vStop, vNow - время начальное, конечное, текущее


 
Anatoly Podgoretsky ©   (2003-12-03 10:27) [4]

А кто знает, что 01:30 это следующий день, а не вчерашний?
Не надо хранить время отдельно от дней и сравнивать, для сравнения нужно полное время


 
Danilka ©   (2003-12-03 10:35) [5]


> Если системные дата/время больше например 23:00 текущей
> даты и меньше 01:30 следующего дня, то выполнить определенные
> действия. Подскажите пожалуйста, как это можно реализовать
> на Delphi


гы, а что, системная дата не равна текущей?
вероятно - машина времени, не видел еще реализацию на дельфях.


 
Anatoly Podgoretsky ©   (2003-12-03 11:55) [6]

StartDate := Date + StrToTime("23:00:00");
EndDate := Date + 1 + StrToTime("01:30:00");
If (Now >= StartDate) and (Now <= EndDate) then ...


 
Silver Alex ©   (2003-12-03 12:12) [7]


> EndDate := Date + 1 + StrToTime("01:30:00");

все таки надежнее

EndDate := Date + 1 + EncodeTime(13,30,0,0);


 
Anatoly Podgoretsky ©   (2003-12-03 12:15) [8]

Ну это уже не относится к алгоритму, а к реализации, вопросы надежности и реализации остаются на его совести, задача дать идею и пусть думает.



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

Текущий архив: 2003.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
3-36540
Andrey__
2003-11-20 13:44
2003.12.12
ADO+Access2000+@@identity


1-36761
CrazyHacKeRs
2003-11-26 14:45
2003.12.12
Помогите примером работы с XSLT


1-36722
warman
2003-12-01 22:14
2003.12.12
Интересные вопросы по Richedit


1-36657
Rimd
2003-11-30 19:23
2003.12.12
Объект и StringGrid


3-36580
Duber
2003-11-19 16:00
2003.12.12
Есть ли СУБД в которых не нужно использовать посредников типа BDE