function MinusDate(d1,d2: Tdate): string;
begin
result := FloatToStr(d2 - d1);
end;
begin
result := FloatToStr(d2 - d1);
end;
解决方案 »
- 问个关于多显示器显示模式的问题
- 大家都知道D2010的RTTI得到了极大的增强,不知道是否也和.net那样支持动态编译呢?
- 构造函数里再调用另一构造函数,会不会分配了2次内存?
- 各位大虾,帮帮我,关于标准表达式中数据类型不匹配问题
- 保存一个类到数据库,能否实现?
- 看了李维的《borland传奇》,知道它有许多了不起的工程师,谁能介绍一下关于microsoft有哪些了不起的人物
- 怎样把一个表中的数据移到另一数据表中(在线等待)
- 求Delphi下QR二维码控件
- 有关DELPHI和IE的问题。
- delphi调用SCardEstablishContext,编译没报错,执行的时候报错
- (特急,特刺激) 如何不显示开始菜单...
- 如何取得本机的IP地址?
Dec1, Dec2: TDateTime): Integer;
begin
Result := Trunc(Dec1 - Dec2);
end;
//但很管用哦!!!!
//一的很简单的问题我写了这么多啊!.....function ZsSigned(mFloat: Extended): ShortInt; { 返回数值符号 }
begin
if mFloat = 0 then Result := 0
else if mFloat < 0 then Result := -1
else Result := +1;
end; { ZsSigned }function ZsGetDay(mYear, mMonth: Word): Word; { 返回年月对应的天数 }
begin
case mMonth of
1, 3, 5, 7, 8, 10, 12: Result := 31;
2: if IsLeapYear(mYear) then Result := 29 else Result := 28;
else //IsLeapYear是否是闰年
Result := 30;
end; { case[Month] }
end; { ZsGetDay }procedure ZsIncDate(var nDate: TDate); { 日期加一天 }
var
vYear, vMonth, vDay: Word;
vMonthDay: Word;
begin
DecodeDate(nDate, vYear, vMonth, vDay);
vMonthDay := ZsGetDay(vYear, vMonth);
if Succ(vDay) <= vMonthDay then
vDay := Succ(vDay)
else
begin
vDay := 1;
if vMonth = 12 then
begin
vMonth := 1;
vYear := Succ(vYear);
end else vMonth := Succ(vMonth);
end;
nDate := EncodeDate(vYear, vMonth, vDay);
end; { ZsIncDate }procedure ZsDecDate(var nDate: TDate); { 日期减一天 }
var
vYear, vMonth, vDay: Word;
vMonthDay: Word;
begin
DecodeDate(nDate, vYear, vMonth, vDay);
if Pred(vDay) >= 1 then
vDay := Pred(vDay)
else
begin
if vMonth = 1 then
begin
vMonth := 12;
vYear := Pred(vYear);
end else vMonth := Pred(vMonth);
vMonthDay := ZsGetDay(vYear, vMonth);
vDay := vMonthDay;
end;
nDate := EncodeDate(vYear, vMonth, vDay);
end; { ZsDecDate }function ZsDateComp(mDateA, mDateB: TDate): ShortInt; { 日期比较 }
var
vYearA, vMonthA, vDayA: Word;
vYearB, vMonthB, vDayB: Word;
begin
DecodeDate(mDateA, vYearA, vMonthA, vDayA);
DecodeDate(mDateB, vYearB, vMonthB, vDayB);
Result := ZsSigned((vYearA - vYearB) * 366 +
(vMonthA - vMonthB) * 31 + (vDayA - vDayB));
end; { ZsDateComp }function ZsDateSpace(mDateA, mDateB: TDate): Integer; { 返回两日期相差的天数 }
var
K: ShortInt;
begin
Result := 0;
K := ZsDateComp(mDateA, mDateB);
case K of
+1:
while K > 0 do
begin
Inc(Result);
ZsDecDate(mDateA);
K := ZsDateComp(mDateA, mDateB);
end;
-1:
while K < 0 do
begin
Dec(Result);
ZsIncDate(mDateA);
K := ZsDateComp(mDateA, mDateB);
end;
end;
end; { ZsDateSpace }/////////
//一样的
procedure TForm1.Button1Click(Sender: TObject);
var
vDateA, vDateB: TDate;
begin
vDateA := StrToDate(Edit1.Text);
vDateB := StrToDate(Edit2.Text);
Caption := Format('%d(%d)', [ZsDateSpace(vDateA, vDateB), Round(vDateA - vDateB)]);
end;
////////
如果你要得到月的相差数
如果你要得到年的相差数
请用我的方法吧
Pascal 6.0 ... Delphi5...都行
*//)