现在用到要取得月中的最后一天,在 sql 中用 2007-02-30 这个日期试了一下,出错了,所以必须用有效的日期,
以下的代码是试验用到的
procedure TForm1.Button1Click(Sender: TObject);
var
fisc:string;
ss : string;
m1,m2:Tdatetime;
nextMonth:tdatetime;
curMonth:tdatetime;
maxDay:string;
m,y:dword;
ms,ys:string;
begin
m1 := strtodate('2007-09-29');
m2 := strtodate('2007-10-28');
m :=dateutils.MonthOf(m2);
y := dateutils.YearOf(m2);
ms :=inttostr(m);
ys :=inttostr(y);
nextMonth := strtodate(ys+'-'+inttostr(m+1)+'-01'); // 取得下一个月的 1 号
curMonth := strtodate(ys+'-'+inttostr(m)+'-01'); // 取得当月的 1 号
showmessage(floattostr(nextMonth-curMonth)); // 31
showmessage(datetostr( dateutils.EndOfTheMonth(curMonth))); // 2007-10-31
showmessage(datetostr( dateutils.EndOfTheDay(curMonth))); // 2007-10-01
showmessage(datetostr( dateutils.EndOfTheYear(curMonth))); // 2007-12-31
showmessage(datetostr( dateutils.EndOfAMonth(y,m))); // 2007-10-31
end;