我是从DateTimePicker1.date里得到的,取出来的格式为"2008-05"。

解决方案 »

  1.   

    function DaysInMonth(ADate:TDateTime):Integer;
    var
      iMonth,iYear,iDay   :   Word;
      MyDayTable   :   TDayTable;
      tmpBool   :   Boolean;
    begin
      DecodeDate(ADate,   iYear,   iMonth,   iDay);
      tmpBool   :=   IsLeapYear(iYear);
      MyDayTable   :=   MonthDays[tmpBool];
      Result   :=   MyDayTable[iMonth];
    end;
      

  2.   


    uses
      DateUtils;  DaysInMonth(DateTimePicker1.date)
      

  3.   

    uses DateUtils;var
      RawDateStr: string;RawDateStr := '2008-05';
    Result := DaysInMonth(StrToDate(RawDateStr + '-01'));
      

  4.   

    你们说我DateTimePicker1的format设置为“yyyy-MM",DateTimePicker1.date取出来的是类似”2008-04“的格式吗?要是的话,为什么我用DaysInMonth还是报错呢?
      

  5.   

    DaysInMonth要一个完整的日期变量,你年月给对了,日子随便给一个就行,2008-04-01
      

  6.   

    一个月有多少天不是很简单的事么?除了闰年的2月是29天,非闰年为28,其它就是1,3,5,7,8,10,12为31天,其余30天。
    if (year mod 100) = 0 then begin 
      //如果可以被100整除(世纪元年),就再看是否能被400整除,能够则为闰年(二月有29天),否则非闰年(二月仅有28天)
      if (year mod 400) = 0 then
        result := true
      else 
        result := false;
    end else if (year mod 4) = 0 then 
      //如果非世纪元年,能够被4整除则为闰年,否则为非闰年
      result := true
    else
      result := false;if ((year mod 400) = 0) or (((year mod 100) <> 0) and ((year mod 4) = 0)) then result := true
    else Result := false;也可以通过DateUtils单元的IsLeapYear来判断是否为闰年,或者通过DateUtils单元的function DaysInAMonth(const AYear, AMonth: Word): Word;传入年度和月份值来取得该月的天数。
      

  7.   

    呵呵   怎么加呀,DateTimePicker1.date是要显示出来的,我不想显示出日子。
      

  8.   

    这位兄台的方法可以的
    通过StrToDateDef()将取得的一个值转化为1号,众多周知每月肯定都是有1号的,没1号我就不活了.
    "2008-05-01 00:00:00 000"就是一个完整的Datetime类型
    然后直接使用DaysInMonth()就OK了
      

  9.   

    DateTimePicker1.date不就是带日子的吗,不想显示日子就fromatdatetime('yyyy-mm',DateTimePicker1.date)但是判断天数的函数里要有日子
      

  10.   

    是这样的,我想作一个按照月份进行查询的工资表,DateTimePicker1.date的datemode:=dmupdown,format:='yyyy-mm',这时候DaysInMonth(DateTimePicker1.date)好象得不到天数,程序老报错,delphi里的显示函数是什么,象JAVA里的system.out.print一样,我想输出来看看
      

  11.   


    同意
    lz不想显示日子 可以设置控制面板的日期格式或用encodeDate拼一下
      

  12.   

    我调用完DaysInMonth(DateTimePicker1.date)后系统报错:"'''is not a valid floating point value"
      

  13.   

    uses
      dateutils,strUtils;var
      strYM: String;
    begin
      strYM := '2009-02';  ShowMessage(IntToStr(DaysInAMonth(StrToIntDef(Copy(strYM,1,Pos('-',strYM)-1),0),StrToIntDef(RightStr(strYM,Length(strYM)-Pos('-',strYM)),0))));
    end;  ShowMessage(IntToStr(DaysInAMonth(YearOf(DateTimePicker1.Date),MonthOf(DateTimePicker1.Date))));
      

  14.   


      declare @dt datetime   
      set @dt='2009-02-05'   
        
      SELECT datediff(day,@dt-day(@dt)+1,dateadd(month,1,@dt-day(@dt)   +1)-1)+1   
      SELECT 32-Day(@dt+(32-Day(@dt)))
      

  15.   


    uses
    DateUtils;
    ShowMessage(IntToStr(DaysInAMonth(YearOf(DateTimePicker1.Date),MonthOf(DateTimePicker1.Date))));
      

  16.   


    uses
    DateUtils;
    ShowMessage(IntToStr(DaysInAMonth(YearOf(DateTimePicker1.Date),MonthOf(DateTimePicker1.Date))));