统计一段时间段内有几个星期天的函数,各位看看有没有更好的方法。(5分)

  • 主题发起人 主题发起人 lindeping
  • 开始时间 开始时间
L

lindeping

Unregistered / Unconfirmed
GUEST, unregistred user!
统计一段时间段内有几个星期天的函数:
function countsun(var date1,date2:tdate):integer;
var i,j:integer;
begin
i:=dayofweek(date1);
j:=dayofweek(date2);
result:=floor(floor(date2-date1)/7);
if (i=1) or (j=1) then
result:=result+1;
end;
 
好像没有
 
week (wk, ww) 日期部分反映对 SET DATEFIRST 作的更改。任何一年的 1 月 1 日定义了 week 日期部分的开始数字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此处 xxxx 代表任一年。
weekday (dw) 日期部分返回对应于星期中的某天的数,例如:Sunday = 1、Saturday = 7。weekday 日期部分产生的数取决于 SET DATEFIRST 设定的值,此命令设定星期中的第一天。
 
请教 cxz9 :
week()是何函数,用处?DATEPART()?
我这个函数是用DELPHI6写的,DELPHI中好象没有week()这个函数,还有DATEPART()?
不过你讲的很有见地,我也在想如果用户改动了DATEFIRST 使 Sunday <> 1,
我这个函数不就有问题啦。
老兄有空写个函数给我,可以吗?我等用
 
呵呵,好象Trunc(Date2) div 7 - Trunc(Date1) div 7不会错吧?
 
如果“一段时间”指的是不长的一段时间(< 1 year)应该不难。
关注
 
function WeeksBetween(const ANow, Athen
: TDateTime): Integer;
Description
Call WeeksBetween to obtain the difference, in weeks, between two TDateTime values. WeeksBetween counts only whole Weeks that have elapsed. Thus, WeeksBetween reports the difference between January 1 at 12:00 AM and Jan 6 at 11:58 PM as 0 because the difference is one minute short of an entire week.
 
function WeekSpan(const ANow, Athen
: TDateTime):do
uble;
Description
Call WeekSpan to obtain the difference, in weeks, between two TDateTime values. Unlike the WeeksBetween function, which only counts whole weeks, WeekSpan reports incomplete weeks as a fraction of an entire week.
 
to barton:
Trunc(Date2) div 7 - Trunc(Date1) div 7 好象没有问题。
对 SET DATEFIRST 作的更改再试验看看。
to writer
“一段时间”指的可能是长的一段时间 如2年内
to ugvanxk
weekspan(),weekbetween()两个函数是哪里的,DELPHI里没有啊?
 
DELPHI中有现成的函数,就是楼上所说的,WeekBetween你查帮助
 
Result:=Trunc(Date2-Date1) div 7;
if (dayofweek(Date1)=1) and (dayofweek(Date2)=1) then
Result:=Result+1;
 
如果是跨年度的呢?所以要先判断是否年份,还有记得星期天是每个星期的第一天哦!
 

Similar threads

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