如何求:“本周、上周”的开始和结束日期? 欢迎参与!参与有分!! (300分)

  • 主题发起人 主题发起人 yu_ting
  • 开始时间 开始时间
Y

yu_ting

Unregistered / Unconfirmed
GUEST, unregistred user!
  相对于系统当前日期,如何求:“本周、本月、本季度、本年、上月、上周、上季度”的开始和结束日期?
  比如:今天是2004年4月1日,我想求出本周日的日期、本周六的日期?
  希望看到详细算法代码^_^
 
用WeekOf(你的日期)这个函数可以知道
星期几
象后推就知道了
 
uses DateUtils;
StartOfTheWeek(DateTime:TDateTime);//本周开始时间
EndOfTheWeek(DateTime:TDateTime);//本周结束时间。
 
1 用 dayofweek(date)得到今天是星期几
用 decodedate(date)得到今天的年,月,日
2本年的开始是 年+1月+1日 结束 是 年+12月+31日

本季度 procedure 季度(月:integer;out 开始,结束:Tdate);
case 月 do
1,2,3:开始 1月1日 结束 3月31日;
4,5,6:.....
7,8,9:
10,11,12:
end
本月 procedure(月:integer;out 开始,结束);
case 月 do
1,3,5,7,8,10,12:结束 月+31;
4,6,9,11:结束 月+30;
2:begin
if 是闰年 then
结束 月+29
else
结束 月+28
end
end;
本周 procedur(今天周几,日:integer;out 开始,结束:Tdate )
开始:=日-今天周几,
结束:=开始+7;

上月 ,上周,上季 :调用上面得函数(月-1)...

 
返回指定日期的所在月的最后一天的日期:
function LastDayOfMonth(Dat: TDate): TDate;
var
D, M, Y : Word;
begin
DecodeDate(IncMonth(Dat, 1), Y, M, D);
Result := EncodeDate(Y, M, 1) - 1;
end;
 
在DateUtils都有这些函数的。很简单不需要代码的。
uses DateUtils;
{ 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;
 
接受答案了.
 

Similar threads

D
回复
0
查看
928
DelphiTeacher的专栏
D
D
回复
0
查看
883
DelphiTeacher的专栏
D
D
回复
0
查看
856
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部