Текущий архив: 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.46 MB
Время: 0.006 c