待验证:
使用DELPHI自带函数
uses
DateUtils;
StartOfTheMonth()
还有StartOfTheYear等相关函数,不用那么麻烦的
------------------------------------------------------------
// ******************************************************************************
// 函数功能: 取得某月的最后一天的日期
// 函数名称: cf_dateGetMonthLastDate(aDate:TDate):TDate;
// 函数参数: aDate: 录入某天日期
// 返回值: 返回该天所在月的最后一天的日期。
// ******************************************************************************
function cf_dateGetMonthLastDate(aDate: TDate): TDate;
var
AFirstDay, ANextFirstDay: string;
begin
try
AFirstDay := FormatDateTime('yyyy-mm-dd', cf_dateGetMonthFirstDate
(aDate));
if StrToInt(Copy(AFirstDay, 6, 2)) < 12 then
begin
// 取当月第一天的日期
ANextFirstDay := IntToStr(StrToInt(Copy(AFirstDay, 6, 2)) + 1);
// 取下月第一天的日期
Delete(AFirstDay, 6, 2); // 删除字串中的月份
Insert(ANextFirstDay, AFirstDay, 6); // 插入当月的月份到字串中
Result := StrToDate(AFirstDay) - 1; // 取得当月最后一天的日期
end
else
begin
Result := StrToDate(Copy(AFirstDay, 1, 4) + '-12-31');
end;
except
Result := StrToDate('1900-01-01');
end;
end;
--------------------------------------------------------------------------------
取得某月的第一天:
formatdatetime('yyyy-mm-01',now())
简单的取本月第一天