// ****************日期操作***********************
function dateLeapYear(D: TDateTime): Boolean; // 判断闰年还是平年
function WeekDay(const CuDate: TDateTime): string; // 得到汉文周几
function getThisWeekBEDate: TDateArray;
function getNextWeekBEDate: TDateArray;
function getPriorWeekBEDate: TDateArray;
function GetJiDuDate(dd: TDateTime): TDateArray; // 得到季度的起止日期
type
TDateArray = array[0..1] of TDateTime; // 起始时间
TMonthArray = array[0..1] of Word;
// 取得本周起止日期
function getThisWeekBEDate: TDateArray;
var
tdArray: TDateArray;
td: TDateTime;
s: Integer;
begin
td := Date;
s := DayOfWeek(td);
tdArray[0] := td + 2 - s;
tdArray[1] := tdArray[0] + 4;
Result := tdArray;
end;
// 下周
function getNextWeekBEDate: TDateArray;
var
tdArray: TDateArray;
td: TDateTime;
s: Integer;
begin
td := Date;
s := DayOfWeek(td);
tdArray[0] := td + 9 - s;
tdArray[1] := tdArray[0] + 4;
Result := tdArray;
end;
// 上周
function getPriorWeekBEDate: TDateArray;
var
tdArray: TDateArray;
td: TDateTime;
s: Integer;
begin
td := Date;
s := DayOfWeek(td);
tdArray[0] := td - 5 - s;
tdArray[1] := tdArray[0] + 4;
Result := tdArray;
end;
// 取得汉文星期几
function WeekDay(const CuDate: TDateTime): string;
begin
Result := Copy('日一二三四五六', DayOfWeek(CuDate) * 2 - 1, 2);
end;
// 闰年
function dateLeapYear(D: TDateTime): Boolean;
var
Year, Month, Day: Word;
begin
DecodeDate(D, Year, Month, Day);
Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0));
end;
function GetJiDuDate(dd: TDateTime): TDateArray;
var
Y, M: Word;
begin
Y := yearof(dd);
M := MonthOf(dd);
Dec(M, (M - 1) mod 3);
Result[0] := DateOf(StartOfAMonth(Y, M));
Result[1] := DateOf(EndOfAMonth(Y, M + 2));
end;