procedure GetMonthDay(const ADate: TDateTime;
  var AMonthFirst, AMonthLast: TDateTime);
var
  Year, Month, Day: Word;
begin
  DecodeDate(ADate, Year, Month, Day);
  AMonthFirst := EncodeDate(Year, Month, 1);
  if Month + 1 > 12 then
    AMonthLast := EncodeDate(Year + 1, 1, 1) - 1
  else
    AMonthLast := EncodeDate(Year, Month + 1, 1) - 1
end;procedure GetWeekDay(const ADate: TDateTime;
  var AWeekFirst, AWeekLast: TDateTime);
var
  WeekOffset: Integer;
begin
  WeekOffset := DayOfWeek(ADate);
  AWeekFirst := ADate - WeekOffset + 1;
  AWeekLast := ADate + (7 - WeekOffSet)
end;

解决方案 »

  1.   

    首先获取今天的日期和星期几。
    var thisday,MonDay,SunDay,MonthBeg,MonthEnd :TDateTime;
        ii :Integer;
    ThisDay := Date;
    ii := DayOfWeek;  (0表示星期天,6表示星期六);SunDay := ThisDay - ii;
    MonDay := ThisDay - ii + 1;MonthBeg := StrToDateTime(FormatDateTime('YYYY-MM-01',ThisDay));
    MonthEnd := (下一个月的第一天减一就可以了)。
      

  2.   

    //DateUtils.pas for Delphi6.0{ Start/End functions }function StartOfTheYear(const AValue: TDateTime): TDateTime;
    function EndOfTheYear(const AValue: TDateTime): TDateTime;
    function StartOfAYear(const AYear: Word): TDateTime;
    function EndOfAYear(const AYear: Word): TDateTime;function StartOfTheMonth(const AValue: TDateTime): TDateTime;
    function EndOfTheMonth(const AValue: TDateTime): TDateTime;
    function StartOfAMonth(const AYear, AMonth: Word): TDateTime;
    function EndOfAMonth(const AYear, AMonth: Word): TDateTime;function StartOfTheWeek(const AValue: TDateTime): TDateTime;          {ISO 8601}
    function EndOfTheWeek(const AValue: TDateTime): TDateTime;            {ISO 8601}
    function StartOfAWeek(const AYear, AWeekOfYear: Word;                 {ISO 8601}
      const ADayOfWeek: Word = 1): TDateTime;
    function EndOfAWeek(const AYear, AWeekOfYear: Word;                   {ISO 8601}
      const ADayOfWeek: Word = 7): TDateTime;function StartOfTheDay(const AValue: TDateTime): TDateTime;
    function EndOfTheDay(const AValue: TDateTime): TDateTime;
    function StartOfADay(const AYear, AMonth, ADay: Word): TDateTime; overload;
    function EndOfADay(const AYear, AMonth, ADay: Word): TDateTime; overload;
    function StartOfADay(const AYear, ADayOfYear: Word): TDateTime; overload;
    function EndOfADay(const AYear, ADayOfYear: Word): TDateTime; overload;
      

  3.   

    kylion(凯林):是现成的函数??哪个版本有d5 or d6??
      

  4.   

      j:=DayOfWeek(date);
      case j of
      1:Label10.Caption:='今天星期日';
      2:Label10.Caption:='今天星期一';
      3:Label10.Caption:='今天星期二';
      4:Label10.Caption:='今天星期三';
      5:Label10.Caption:='今天星期四';
      6:Label10.Caption:='今天星期五';
      7:Label10.Caption:='今天星期六';
      end;
      

  5.   

    有没有这样一个函数可以直接返回今天的天数?要求天数为integer或是word类型
      

  6.   

    procedure GetFirstLastDayOfMonth(CurDay: Tdatetime;var FirstDay,LastDay: TDatetime);
    var
      Year,Month: string;
    begin
      year := Formatdatetime('yyyy',CurDay);
      Month := Formatdatetime('mm',CurDay);
      FirstDay := strtodatetime(Year+'-'+Month+'-01');
      if Month = '12' then
      begin
        Year := inttostr(strtoint(Year) + 1);
        LastDay := strtodatetime(Year+'-01-01');
      end
      else
      begin
        Month := inttostr(strtoint(Month) + 1);
        LastDay := strtodatetime(Year+'-'+Month+'-01');
      end;
      LastDay := LastDay - 1;
    end;