这个非常简单,你先获得下个月的第一天,用EncodeDate做,然后得出的值-1就是上月的最后一天。
比如2000年2月
var
  a: TDatetime;
 a := EncodeDate(2000, 3, 1) - 1;  // a = 2000/2/29

解决方案 »

  1.   

    如果你的後台有Oracle數據庫,
    那這個問題變得異常簡單.select last_day(sysdate) from dual;  --其中sysdate可為你想傳入的任何日期.
      

  2.   

    同意 Chechy的做法,可以称为通用程序Function GetMonthLastDay(Year,Month:Word):TDatetime;
    Begin
      Result:=EnCodeDate(Year,Month+1,1)-1;
    End;
      

  3.   

    上面的程序还是有些问题,没有考虑12月。
    应该是:
      if (Month = 12) then
        Result := EncodeDate(Year + 1, 1, 1) - 1
      else
        Result := EncodeDate(Year, Month + 1, 1) - 1;
      

  4.   

    thank you for checky, 
    我想聽聽其他網友更多的意見﹐一定給你加分
      

  5.   

    To: chechy 你在那个城市?
      

  6.   

    chechy(chechy):高手阿!!那天也去杭州逛逛。