给你以下几个函数,用它们来做你要达到的效果吧,别忘了把你调用这几个函数的代码贴出来,呵呵。
//定义DyasInMonth数组常量
const
DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);//函数:判断某一年是否闰年
function IsLeapYear(AYear: Integer): Boolean;
begin
Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0));
end;//函数:得到某一年某一月有多少天
function DaysOfMonth(AYear, AMonth: Integer): Integer;
begin
Result := DaysInMonth[AMonth];
if (AMonth = 2) and IsLeapYear(AYear) then Inc(Result); { leap-year Feb is special }
end;//函数:改变月份
//入口参数:AYear - 当前年、AMonth - 当前月、Delta - 要向前(正数)或后退(负数)的月数
//输出参数:AYear - 改变后的年、AMonth - 改变后的月
procedure ChangeMonth(var AYear, AMonth: Integer; Delta: Integer);
var
iYear, iMonth, iDay: Word;
NewDate: TDateTime;
begin
iYear := AYear;
iMonth := AMonth;
if Delta > 0 then iDay := DaysOfMonth(iYear, iMonth)
else iDay := 1;
NewDate := EncodeDate(iYear, iMonth, iDay);
NewDate := NewDate + Delta;
DecodeDate(NewDate, iYear, iMonth, iDay);
AYear := iYear;
AMonth := iMonth;
end;
//定义DyasInMonth数组常量
const
DaysInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);//函数:判断某一年是否闰年
function IsLeapYear(AYear: Integer): Boolean;
begin
Result := (AYear mod 4 = 0) and ((AYear mod 100 <> 0) or (AYear mod 400 = 0));
end;//函数:得到某一年某一月有多少天
function DaysOfMonth(AYear, AMonth: Integer): Integer;
begin
Result := DaysInMonth[AMonth];
if (AMonth = 2) and IsLeapYear(AYear) then Inc(Result); { leap-year Feb is special }
end;//函数:改变月份
//入口参数:AYear - 当前年、AMonth - 当前月、Delta - 要向前(正数)或后退(负数)的月数
//输出参数:AYear - 改变后的年、AMonth - 改变后的月
procedure ChangeMonth(var AYear, AMonth: Integer; Delta: Integer);
var
iYear, iMonth, iDay: Word;
NewDate: TDateTime;
begin
iYear := AYear;
iMonth := AMonth;
if Delta > 0 then iDay := DaysOfMonth(iYear, iMonth)
else iDay := 1;
NewDate := EncodeDate(iYear, iMonth, iDay);
NewDate := NewDate + Delta;
DecodeDate(NewDate, iYear, iMonth, iDay);
AYear := iYear;
AMonth := iMonth;
end;
解决方案 »
- 关于fastreport中自定义变量的问题
- 如何增加 DNS
- 让WINDOWS窗口保持在最前面的API是什么?
- 一个小数相乘的问题
- 为什么我用qickrep做的报表只能显示一行啊?能不能给点解释?
- 用delphi作的OCX加了数字签名后 在IE客户端运行 提示警告 按是接受后 并不能修改客户端的注册表 或者只能修改部分 是怎么回事?在IE5下有
- 关于SQL语句建表的问题,奇怪!
- [delphi]undeclared identifier
- ODBC的连接问题
- 如何在托盘区系统图标的-!中间!-插入我的图标?我只能插在最后!
- 对面的大虾看过来!今高兴!散分了!
- 有没有for delphi6的creport报表控件?
procedure TForm2.Button7Click(Sender: TObject);
var
Date: TDate;
TempTime: TDate;
begin
Date:=incMonth(Date(),6);
TempTime:=Date-Date();
Button7.Caption:=FloatToStr(TempTime);
end;
var startTime,endTime:TDatetime;
Year,Month,Day,diff:word;
begin
Diff :=6;
startTime :=Now;
DecodeDate(startTime,Year,Month,Day);
endTime :=EncodeDate(Year,Month+Diff,Day);
ShowMessage(FloatToStr(DaySpan(startTime,endTime)));
ShowMessage(FloatToStr(DaysBetween(startTime,endTime)));
end;