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

Вниз

Вопрос по DateTime   Найти похожие ветки 

 
levova   (2003-06-25 15:15) [0]

Как получить разницу между DateTime1 и DateTime2 в формате гг.мм.дд.чч.мм.сс?


 
ZEE ©   (2003-06-25 15:17) [1]

Вероятно DateTime1 и DateTime2 это переменные типа TDateTime - тогда так:

Label1.Caption:=FormatDateTime("yy.mm.dd.hh.nn.ss",DateTime1 - DateTime2));


 
levova   (2003-06-25 15:47) [2]

Попробуй какую чепуху оно выдает


 
Bel ©   (2003-06-25 15:54) [3]

> ZEE © (25.06.03 15:17)

А ты сам-то пробовал так делать? Попробуй так:

DateTime1 := Now;
DateTime2 := DateTime1;
Label1.Caption:=FormatDateTime("yy.mm.dd.hh.nn.ss",DateTime1 - DateTime2));


Как ты думаешь, что ты получишь?


 
Bel ©   (2003-06-25 16:25) [4]

> levova

Разность (DateTime1 - DateTime2) - это обычное число, целая часть которого - количество дней, а дробная - часть суток, прошедшие между этими датами (подробности см. описание типа TDateTime в хэлпе).
Время узнать можно (например, TimeToStr), а вот количество месяцев и лет - это сложнее. Есть функции MonthsBetween и YearsBetween, но они рассчитывают разницу исходя из среднего количества дней в месяце (дней в году). Если это не устраивает, тогда пиши ручками.


 
Armen   (2003-06-25 16:30) [5]

var
dd,hh,mm,ss: word;
delta: TDateTime;
sec: int64;
begin
delta:= Abs(DateTime1 - DateTime2);
sec:= Trunc(24*60*60*Frac(delta));
dd:= Trunc(delta);
hh:= sec div (60*60);
mm:= (sec - hh*60*60) div 60;
ss:= Trunc(sec - hh*60*60 - mm*60);
end;

yy, mm ne poluchitsya, oni peremennie.
yy:= 364..365
mm:= 28..31


 
Armen   (2003-06-25 16:34) [6]

Posledniy Trunc lishniy.


 
ZEE ©   (2003-06-25 17:07) [7]

>levova,Bel
а вы не пробовали немного пораскинуть мозгами и поэкспериментировать с этим кодом - хотя бы взять ипроверить эту разность на неравенство 0 ...


 
Bel ©   (2003-06-25 17:17) [8]

> ZEE © (25.06.03 17:07)

Ну и что, по-твоему, даст сравнение разности с 0? Как из этого получить разницу между датами?


 
Anatoly Podgoretsky ©   (2003-06-25 19:59) [9]

Ну допустим в результате вычитания мы получили 368 дней, это какая дата 1.01.1993, 15.02.2015


 
NDeu ©   (2003-06-25 22:29) [10]


uses DateUtils, Math, SysUtils;

procedure DecodeDateTimeDif(DateTime1,DateTime2:TDateTime;
var YY,MM,DD,HH,MN,SS,MS:integer);
var
YY1,YY2,MM1,MM2,DD1,DD2,HH1,HH2,MN1,MN2,SS1,SS2,MS1,MS2:word;
DT:TDateTime;
begin
If DateTime1>DateTime2
then begin
DecodeDateTime(DateTime2,YY1,MM1,DD1,HH1,MN1,SS1,MS1);
DecodeDateTime(DateTime1,YY2,MM2,DD2,HH2,MN2,SS2,MS2);
DT:=DateTime2;
end
else begin
DecodeDateTime(DateTime1,YY1,MM1,DD1,HH1,MN1,SS1,MS1);
DecodeDateTime(DateTime2,YY2,MM2,DD2,HH2,MN2,SS2,MS2);
DT:=DateTime1;
end;
YY:=YY2-YY1;
MM:=MM2-MM1;
DD:=DD2-DD1;
HH:=HH2-HH1;
MN:=MN2-MN1;
SS:=SS2-SS1;
MS:=MS2-MS1;
while MS<0
do begin
SS:=SS-1;
MS:=MS+1000;
end;
while SS<0
do begin
MN:=MN-1;
SS:=SS+60;
end;
while MN<0
do begin
HH:=HH-1;
MN:=MN+60;
end;
while HH<0
do begin
DD:=DD-1;
HH:=HH+24;
end;
while DD<0
do begin
MM:=MM-1;
DD:=DD+DaysInMonth(IncMonth(DT,MM));
end;
while MM<0
do begin
YY:=YY-1;
MM:=MM+12;
end;
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
14-20283
Leech
2003-06-18 01:51
2003.07.07
Связь с компьютером в локальной сети через Интернет


3-19967
alex nosik
2003-06-12 11:29
2003.07.07
Как программно в Delphi создать базу на удаленном IB 6 ?


14-20202
Maxim Pshevlotsky
2003-06-20 05:22
2003.07.07
OrbPas.pas НЕ НАЙДЕН!


3-19966
Max_
2003-06-12 14:19
2003.07.07
Результат Query как таблица?


4-20366
NewN
2003-05-05 09:02
2003.07.07
Multiwindow Application on WinAPI