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

Вниз

Фигня с TDateTime   Найти похожие ветки 

 
Стас   (2003-01-21 14:26) [0]

Здравствуйте!
Тут обнаружил, что переменная данного типа не может хранить больше часов, чем 24. А мне надо суммировать данные за месяц в часах и минутах, которые в сумме превосходят это число и все скидывается на ноль. Как обойти это?


 
Anatoly Podgoretsky ©   (2003-01-21 14:28) [1]

Потому что она хранит не часы а дни, в дробном виде, но на ноль ничего не скидывается, это у тебя ошибка в программе.


 
Fiend ©   (2003-01-21 14:30) [2]

единственный способ - ЗАСТРЕЛИТЬСЯ!


 
Стас   (2003-01-22 07:19) [3]

Она может хранить дни и часы. Вроде так. Но 25 часов превращаются в 1 час.


 
Anatoly Podgoretsky ©   (2003-01-22 07:41) [4]

У тебя ошибка в программе.


 
Max Zyuzin ©   (2003-01-22 09:09) [5]

>Стас (21.01.03 14:26)
Покажи пожалуйста как ты сумируешь часы в программе..


 
stone ©   (2003-01-22 09:20) [6]


> Но 25 часов превращаются в 1 час.


25 часов превращаютсяв 1 день и 1 час. Если ты показываешь только время, то дней ты, естественно не увидишь.


 
Chubais ©   (2003-01-22 10:40) [7]

ААААААААААААААААААААААААААААА!!!!!!!!!!!!!!!!!!!


 
BlackTiger   (2003-01-22 10:50) [8]

Сильно, сильно...
На то оно и DateTime, что бы хранить только 24 часа!
Слабо "56-е число 45-го месяца 56 часов 87 минут 134 секунды"?

Хранить это добро надо в INTEGER (в секундах, минутах, часах), а не в DateTime.


 
Anatoly Podgoretsky ©   (2003-01-22 10:56) [9]

BlackTiger (22.01.03 10:50)
TDateTime нормально хранит это, нет нужды делать извращение с INTEGER

Стас (22.01.03 07:19)
Хинт: время по милитаристкой шкале индициуется как значение в диапазоте от 00:00:00 до 23:59:00, а у тебя какая шкала?


 
Johnmen ©   (2003-01-22 11:06) [10]

Чубайс опять обкакался от смеха...:)


 
Chubais ©   (2003-01-22 11:12) [11]

Johnmen © (22.01.03 11:06)
не, тогда еще не обкакался
прочитал BlackTiger (22.01.03 10:50)
и тогда уж обкакался)))))))))))


 
wman   (2003-01-22 12:24) [12]

Можно юзать DecodeTime и DecodeDate или напрямую работать с
TDateTime:

procedure TForm1.Button2Click(Sender: TObject);
var D1, D2, DT: TDateTime;
DTS: TTimeStamp;
SS, HH: Integer;
begin
D1 := StrToDateTime("10.01.2003 2:00:00");
D2 := StrToDateTime("09.01.2003 1:00:00");
DT := D1 - D2;
SS := Trunc(1440 * (DT - Trunc(DT)));
HH := Trunc(DT)* 24;
HH := HH + SS div 60;
SS := SS mod 60;
Caption := IntToStr(HH) + ":" + FormatFloat("00", SS);
end;


 
Стас   (2003-01-22 14:06) [13]

Да, 25 часов это 1 сутки и 1 час. Но если в таком виде выводить на отчет, то вместо этих суток машина выставляет какую-то определенную дату, а это совсем не нужно.
>wman
Попробую применить, хотя я уже перековырял все на Float, что конечно не так красиво.


 
Johnmen ©   (2003-01-22 14:12) [14]

>хотя я уже перековырял все на Float, что конечно не так
>красиво.

А чем, по-твоему, TDateTime отличается от float ?


 
stone ©   (2003-01-22 14:52) [15]

2 Стас (22.01.03 14:06)

Тогда DecodeTime и DecodeDate тебе помогут.



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
3-28635
Siv Soft
2003-01-22 17:04
2003.02.10
Рвет кодировку MSSQL -> dbase IV


14-29097
Думкин
2003-01-24 06:47
2003.02.10
Ощущения


1-28723
Ihtiandr
2003-01-31 17:25
2003.02.10
Минимальный размер формы


1-28748
Sentinel
2003-01-31 23:48
2003.02.10
ShlObj.SHGetPathFromIDList - обратное преобразование.


1-28877
RomanaPro
2003-01-30 00:02
2003.02.10
Вывод информации на экран (TLabel)