Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизСложение времени Найти похожие ветки
← →
cad2206 (2004-10-04 11:56) [0]Помогите решить такую проблему: есть время, хранящееся в переменной TDataTime. Как мне складывать его так, чтобы оно не отсекалось в дату, если сумма больше 24? Т.е. допустим: 17:20
+10:20=27:40.
← →
Smithson (2004-10-04 11:59) [1]время и дата - это число в формате double.
Целая часть - число дней, дробная, строго говоря, тоже число дней, но дробных, то есть час - это 1/24 = 0,041(6)
а как ты его будешь интерпретировать - твое дело.
← →
Rutven © (2004-10-04 12:01) [2]В TDateTime никак.
Используй другой тип.
А зачем собственно?
← →
cad2206 (2004-10-05 12:51) [3]Ребяты, ну помогите, второй день бьюсь лбом об стену.Есть переменная TDateTime, её значение, к примеру, -0,47369706019. Как из неё получить все время (т.е. дни должны быть переведены в часы)?
← →
Алхимик © (2004-10-05 13:52) [4]
> дни должны быть переведены в часы
Дни переводятся в часы умножением на коэффициент равный 24.
← →
Vitaly © (2004-10-05 13:54) [5]
> Дни переводятся в часы умножением на коэффициент равный
> 24.
Не может быть!? :)
← →
Koala © (2004-10-05 14:13) [6]cad2206 (04.10.04 11:56)
Храни значение в минутах, а затем преобразовуй по надобности в текстовый формат HHH:ММ, почему так?, сам бился над этим и пришел к выводу что так удобнее будет, и суммировать удобнее и если надо тариф умножить на время то тоже удобно, а вообще плясать надо от конкретной задачи
← →
mike-d © (2004-10-05 14:31) [7]Посмотри TTimeStamp
← →
Skyle © (2004-10-05 15:15) [8]TMyTime = record
Hours : Integer;
Minutes : Integer;
end;
?
← →
cad2206 (2004-10-05 15:22) [9]Алхимик: я это понимаю, но как мне из числа -0,47369706019 получить время. Преобразование его в строку помогает (DateTimeToStr), я получаю строку вида "30.12.1988 12:23". Это время у меня постоянно копится, мне не нужна дата совсем, но как быть, когда время переваливает за 24 (дальше меняется дата)?
Koala: Что значит, хранить значение в минутах?
← →
antonn © (2004-10-05 15:31) [10]считай часы и *60 - получишь минуты, + твои отсеченные минуты = 27часов 40минут.
← →
palva (2004-10-05 15:39) [11]А зачем хранить в минутах? Если будем использовать тип TDataTime, то будем хранить в днях, какая разница? Время перевалило за 24 и, вы пишете, дальше меняется дата - это в вашей интерпретации она меняется. А если интерпретировать TDateTime не как дату а как отрезок времени, то там никакой даты нет, есть количество дней. То есть берете переменную с типом TDataTime и умножаете ее на 24 получаете (Double) количество часов. Я не понимаю ваших трудностей.
← →
cad2206 (2004-10-05 15:45) [12]Попробую объяснить задачу:
таблица:
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. Как мне из него получить общее ВРЕМЯ нахождения на территории???
Хотелось бы получить ответы, приближенные к коду. Сам уже ничего не понимаю. Зарание спасибо.
← →
Алхимик © (2004-10-05 15:54) [13]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 получить время
у тебя уже в этом числе содержится время.
Как ты это число интерпритируешь - это твоё личное дело, будь то строка, число минут али количество циклов полураспада плутония...
← →
palva (2004-10-05 15:56) [14]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) [15]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
Это?
← →
cad2206 (2004-10-05 16:46) [16]Всем спасибо, помогло.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c