Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизФормат даты и времени Найти похожие ветки
← →
Ji © (2005-02-17 18:31) [0]Встретил в описании вот такую строку (описываютя типы данных):
datetime = double (1.0 = 1 day = 24h, delphi format)
Что имеется ввиду?
В делфи для работы с датой и временем есть формат TDateTime. Что из себя представляет переменная типа TDateTime? И можно ли с датой и временем работать с помощью Double? (насколько я вкурсе double - это 4 байта)
← →
Antonn © (2005-02-17 18:34) [1]
> Tdatetime = double
← →
Чапаев © (2005-02-17 18:39) [2]SizeOf(Double)=8
← →
begin...end © (2005-02-17 18:50) [3]> Ji © (17.02.05 18:31)
> Что из себя представляет переменная типа TDateTime?
Она представляет собой вещественное число, целая часть у которого равна количеству суток, прошедших с 30 декабря 1899 года, а дробная - части суток, прошедших с начала текущих суток.
> И можно ли с датой и временем работать с помощью
> Double?
Можно, только осторожно. Например, для определения количества дней, разделяющих две даты, можно просто отнять от одной переменной типа TDateTime другую:var
DaysCount: Double;
DT1, DT2: TDateTime;
begin
DaysCount := DT2 - DT1
end.
Над переменными типа TDateTime определены операторы сравнения (<, <=, =, >=, >):var
DT1, DT2: TDateTime;
begin
if DT2 > DT1 then
// Дата DT2 больше даты DT1
end.
Для того, чтобы определить, входит ли дата в заданный интервал дат, можно использовать функцию InRange из модуля Math. Обратите внимание, что эта функция (согласно её описанию) принимает параметры типа Double. Тем не менее, туда можно передать и параметры типа TDateTime:uses
Math;
var
DT1, DT2, DT3: TDateTime;
begin
if InRange(DT3, DT1, DT2) then
// Дата DT3 входит в интервал между DT1 и DT2
end.
И всё же TDateTime не полностью эквивалентно Double. Например, если какая-нибудь подпрограмма требует параметр типа TDateTime, передаваемый по ссылке (var), то напрямую передать в неё переменную типа Double не удастся:procedure MyProc(var Param: TDateTime);
begin
...
end;
var
D: Double;
begin
MyProc(D) <-- Ошибка!
end.
← →
Fay © (2005-02-17 18:53) [4]>> Она представляет собой вещественное число, целая часть у которого равна количеству суток, прошедших с 30 декабря 1899 года,
>> а дробная - части суток, прошедших с начала текущих суток.
Целая, дробная - фигня 8) Это просто количество суток.
← →
begin...end © (2005-02-17 18:57) [5]> Fay © (17.02.05 18:53) [4]
Абсолютно согласен. Просто я решил не импровизировать и перевести справку Delphi.
:-)
← →
Ji © (2005-02-17 22:24) [6]Спасибо всем! Помогли разобраться...
← →
Johnmen © (2005-02-17 23:07) [7]>begin...end © (17.02.05 18:50) [3]
>то напрямую передать в неё переменную типа Double не удастся:
Не совсем понятно, что значит "напрямую", но вот так совершенно корректноMyProc(TDateTime(D));
← →
Anatoly Podgoretsky © (2005-02-17 23:48) [8]Fay © (17.02.05 18:53) [4]
Правильно 1ю5 суток
← →
begin...end © (2005-02-18 07:41) [9]> Johnmen © (17.02.05 23:07) [7]
"Напрямую" - это значит просто взять и передать параметр, без всяких лишних телодвижений.
Я хотел подчеркнуть, что TDateTime и Double - это разные типы, поскольку TDateTime объявлен так:type
TDateTime = type Double
а не так:type
TDateTime = Double
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c