Текущий архив: 2003.03.24;
Скачать: CL | DM;
Вниз
Подскажите как правильно считать время: есть 3 лабела Найти похожие ветки
← →
mmmh (2003-03-07 23:40) [0]В один загоняю время now в другой время когда вставать
а в третий загоняю разницу: label2-label1 ( все ето конечно конвертирую во время) и в итоге иногда странный результат
допустим сейчас 22:00:00 вставать в 2:00:00 в результате вместо 4 часов остатка я получаю 20:00:00 . как сделать правильно с текущим раскладом лабелов
← →
Anatoly Podgoretsky (2003-03-07 23:58) [1]Ошибка в 17 строке
← →
mmmh (2003-03-08 23:34) [2]Не понял?
← →
Anatoly Podgoretsky (2003-03-08 23:37) [3]Код давай
← →
Palladin (2003-03-09 01:10) [4]
> mmmh (07.03.03 23:40)
у тебя с логикой проблема чтоли?
скажи мне сколько будет 22-2? правильно будет 20...
работай не только с часами но и днями...
← →
mmmh (2003-03-09 23:42) [5]Если бы знал как это, то не спрашивал бы.код :
t1 := strtotime(StringGrid1.Cells[2,i]);
тут не лабел а string grid I- идентификатор строки, он изменяется во время выполнения
t2 := t1 - strtotime(times);
StringGrid1.Cells[4,i]:=timetostr(t2);
← →
Palladin (2003-03-09 23:46) [6]используй
DateTimeToStr
StrToDateTime
← →
Anatoly Podgoretsky (2003-03-09 23:58) [7]Ты код приведи, а не обрывки
← →
mmmh (2003-03-10 21:04) [8]по таймеру
t1 := strtotime(StringGrid1.Cells[2,i]);
T1 t2 - tdatetime Итак заносим в т1 - время когда вставать от компа. допустим 22:00:00
t2 := t1 - strtotime(times);
StringGrid1.Cells[4,i]:=timetostr(t2);
теперь в т2 заносим время когда вставать минус текущее время например 19:00:00
в итоге получаем сколько осталось нам 3:00:00. но если допустим время допустим 1:00:00 вставать То сосчитает неверно
← →
Kair (2003-03-10 21:34) [9]Palladin ©
← →
sniknik (2003-03-10 21:56) [10]mmmh (10.03.03 21:04)
тебя просят код, что откуда а не оконечные присваивания.
повторю уже прозвучавшее но
> время когда вставать от компа. допустим 22:00:00
> минус текущее время например 19:00:00
> ... и т.д.
бессмыслено так считать, потому что "если допустим время допустим 1:00:00" то это уже другой день! его тоже надо принимать в расчет. за днем тянется месяц за месяцем год. не включая их получиш ошибки на переходе.
← →
mmmh (2003-03-10 23:55) [11]
ну блин кликаем по батону . Происходит расчет время now + сколько то еще времени из едита.
i:=1;
stringgrig1.cells[2,i]:= strtotime(times)+strtotime(edit1.text); // times -переменная хронит время now
вот и весь расчет.
← →
zolotov (2003-03-11 00:24) [12]Просто так не получится отнять или прибавить какое-то время к текущему. Нужно, действительно, учитывать дни. И для это вручную нужно писать весь код, отдельно работая с часами минутами и секундами.
Вот тебе пример для работы с датами.
Year:=Round(((YearN-y)*12+MonthN-m)/12);
Month:=((YearN-y)*12+MonthN-m)-Year*12;
if Month<0 then
begin
Month:=Month+12;
Year:=Year-1;
end;
Day:=DayN-d;
if Day<0 then
begin
Month:=Month-1;
if Month<0 then
begin
Month:=Month+12;
Year:=Year-1;
end;
Day:=Day+30;
end;
Так что дерзай. И примерно также нужно написать для времени.
← →
Anatoly Podgoretsky (2003-03-11 00:37) [13]Ничего такого сложного писать не требуется, если T2 < T1 then T2:=T2+24, после этого смело можно отнимать T1 от T2
← →
zolotov (2003-03-11 00:48) [14]А к чему, извиняюсь, прибавлять 24? Наверное, нужно как-то к часам прибавлять, а для этого нужно, как-то нужно часы отделить.
← →
sniknik (2003-03-11 01:13) [15]да какая разница, либо отделить дни и считать следующий +24 либо считать с датой и сделать универсально. но в любом случае переход надо учитывать.
(держать время вместе с датой по моему логичнее, иначе возможна путаница, 1:00:00 меньше чем 3:00:00 тогоже дня но больше 21:00:00 предыдущего, хотя разница между ними 2 часа в любом случае только знаком отличается, а если день виден то все очевидно)
← →
Palladin (2003-03-11 01:33) [16]
> mmmh
дни тем более актуальны когда ты решишь поспать более 24 часов :)
ляжешь 1 числа в 23:00 а вставать тебе 3 числа в 1:00... :)
и встанешь ты по своей проге через 2 часа, если не будешь держать данные с днями...
а если делать еще проще, то накой черт тебе эта разница...
ставь на таймере проверку текущего времени и при наступлении тебе нужного делай что тебе надо...
← →
Anatoly Podgoretsky (2003-03-11 09:30) [17]sniknik © (11.03.03 01:13)
Конечно, но если это какое то расписание, то дата может быть лишней и тогда дожно выполняться или правило T2>T1 или проводиться корректировка на 24 часа, в случае T2<T1, или в некоторых случаях делаться две записи от T1 до полуночи и от полуночи до T2, в зависимости от условий задачи. Это особенно нужно для тех случаев когда это представленно в текстовом виде.
В общем задачка для первого, второго класса.
← →
theodor_iv (2003-03-11 10:17) [18]Если не спать больше суток, то
сколько_спать := Frac(1 + время_когда_вставать - время_сейчас);
Все переменные типа TDateTime и содержат только время (без дат)
← →
uw (2003-03-11 12:02) [19]Чем мудрее вопрос, тем больше постов. (с) uw.
← →
mmmh (2003-03-11 23:18) [20]кто хочет посмотреть на мой труд может качать прогу для администрирования компьютерных клубов. www.mblspb.nm.ru/sr.rar
Страницы: 1 вся ветка
Текущий архив: 2003.03.24;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.007 c