![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сложение времени [D7, Win2k]
cad2206 © (2004-10-04 11:56:00)Помогите решить такую проблему: есть время, хранящееся в переменной TDataTime. Как мне складывать его так, чтобы оно не отсекалось в дату, если сумма больше 24? Т.е. допустим: 17:20
+10:20=27:40.
cad2206 (2004-10-05 16:46:00) [1]Всем спасибо, помогло.
palva (2004-10-05 15:56:00) [2]var
t: TDateTime;
begin
t := 0.5; // 12 часов
t := t + 0.333333; // 8 часов (примерно)
t := t + 0.333333; // 8 часов
t := t + 0.333333; // 8 часов
t := t + 0.333333; // 8 часов
// всего будет 44 часов
WriteLn(Double(t)*24:4:1); // 44.0
end.
Vitaly (2004-10-05 15:56:00) [3]Time - разницы времени между выходом и входом за каждый день, а потом складываю их.
DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word)
Вывести в виде HHH:MM
s := Format('%d:%d', hour+(24*int(time)),min)
Время в минутах
min := min+(hour+(24*int(time)))*60
Это?
Алхимик (2004-10-05 15:54:00) [4]DecodeTime + [4]
Есть переменная MyTime : TDateTime.
далее что то в этом роде:
var Hour, Min, Sec, MSec : word;
str : string;
...
DecodeTime(MyTime ,Hour, Min, Sec, MSec);
// раскладываем дату\время на часы, минуты, секунды и милисекунды
str := IntToStr(Trunc(MyTime)*24+Hour)+':'+IntToStr(Min);
// интерпритируем в строку вида 27:40 (аля [0])
...
> как мне из числа -0,47369706019 получить время
у тебя уже в этом числе содержится время.
Как ты это число интерпритируешь - это твоё личное дело, будь то строка, число минут али количество циклов полураспада плутония...
cad2206 (2004-10-05 15:45:00) [5]Попробую объяснить задачу:
таблица:
05.11.2004 10:12.30 Вход
05.11.2004 20:45.14 Выход
06.11.2004 08:30.00 Вход
06.11.2004 19:30.20 Выход
07.11.2004 09:00.30 Вход
07.11.2004 21:15.34 Выход
Необходимо подсчитать время, проведенное на территории.
Я делаю так: считаю разницы времени между выходом и входом за каждый день, а потом складываю их. А получаю значение в формате TDateTime. Как мне из него получить общее ВРЕМЯ нахождения на территории???
Хотелось бы получить ответы, приближенные к коду. Сам уже ничего не понимаю. Зарание спасибо.
palva (2004-10-05 15:39:00) [6]А зачем хранить в минутах? Если будем использовать тип TDataTime, то будем хранить в днях, какая разница? Время перевалило за 24 и, вы пишете, дальше меняется дата - это в вашей интерпретации она меняется. А если интерпретировать TDateTime не как дату а как отрезок времени, то там никакой даты нет, есть количество дней. То есть берете переменную с типом TDataTime и умножаете ее на 24 получаете (Double) количество часов. Я не понимаю ваших трудностей.
antonn (2004-10-05 15:31:00) [7]считай часы и *60 - получишь минуты, + твои отсеченные минуты = 27часов 40минут.
cad2206 (2004-10-05 15:22:00) [8]Алхимик: я это понимаю, но как мне из числа -0,47369706019 получить время. Преобразование его в строку помогает (DateTimeToStr), я получаю строку вида '30.12.1988 12:23'. Это время у меня постоянно копится, мне не нужна дата совсем, но как быть, когда время переваливает за 24 (дальше меняется дата)?
Koala: Что значит, хранить значение в минутах?
Skyle (2004-10-05 15:15:00) [9]TMyTime = record
Hours : Integer;
Minutes : Integer;
end;
?
mike-d (2004-10-05 14:31:00) [10]Посмотри TTimeStamp
Koala (2004-10-05 14:13:00) [11]cad2206 (04.10.04 11:56)
Храни значение в минутах, а затем преобразовуй по надобности в текстовый формат HHH:ММ, почему так?, сам бился над этим и пришел к выводу что так удобнее будет, и суммировать удобнее и если надо тариф умножить на время то тоже удобно, а вообще плясать надо от конкретной задачи
Vitaly (2004-10-05 13:54:00) [12]
> Дни переводятся в часы умножением на коэффициент равный
> 24.
Не может быть!? :)
Алхимик (2004-10-05 13:52:00) [13]
> дни должны быть переведены в часы
Дни переводятся в часы умножением на коэффициент равный 24.
cad2206 (2004-10-05 12:51:00) [14]Ребяты, ну помогите, второй день бьюсь лбом об стену.Есть переменная TDateTime, её значение, к примеру, -0,47369706019. Как из неё получить все время (т.е. дни должны быть переведены в часы)?
Rutven (2004-10-04 12:01:00) [15]В TDateTime никак.
Используй другой тип.
А зачем собственно?
Smithson (2004-10-04 11:59:00) [16]время и дата - это число в формате double.
Целая часть - число дней, дробная, строго говоря, тоже число дней, но дробных, то есть час - это 1/24 = 0,041(6)
а как ты его будешь интерпретировать - твое дело.