hur.cn - 华软网

 热门搜索

高分请教,一个小问题,请高手帮帮忙,一解决马上结贴

  作者:未知    来源:网络    更新时间:2018/2/6
就是例如
2005-05-01到2005-05-31

能过什么方法和能算出,这日期之间,有多少个周六日

请高手,说说思路和解决方法

一解决马上结贴
------华软网友回答------
没人帮我?
------华软网友回复------
设置一下基准日期basedate,确定为星期几。
比较你的begindate与basedate相隔天数,mod 7,计算begindate为星期几
然后,循环计算到enddate
------华软网友回复------
用个for循环,依次取出每一天的日期!!
对于每一天的日期用daynumber()函数
返回值1就是星期天啊7就是星期六啊
------华软网友回复------
DayName()函数可以知道是星期几
这样是不是就好算了
------华软网友回复------
1、可以循环判断每一天是否为星期六、日

2、单独计算头尾两周内的周六日天上,加上中间的周六日天上
即:去掉开始日期到最近的星期一的几天,去掉截止日期到该星期内周一的几天——单独计算
中间的天上整除7×2
------华软网友回复------
对啊,基本的方法,楼上几位都讲了,
也是挺简单的一个判定,可以自己写个函数的
------华软网友回复------
~v~
------华软网友回复------
参考日历控件的写法(PB纯码写的)
------华软网友回复------
long gtshu,1
gtshu=abs(daysafter(stat_sj,end_sj))
date riqi
long riqishu
long l_zlr,l_work
for i=0 to gtshu
riqi=RelativeDate(stat_sj,i)
riqishu=daynumber(riqi)
if riqishu>5 then
l_zlr=l_zlr+1
else
l_work=l_work+1
end if
next
------华软网友回复------
我就是这么做的阿,可是daynumber返回的不对
long gtshu,i
gtshu=abs(daysafter(stat_sj,end_sj))
date riqi
long riqishu
long l_zlr,l_work,l_zlrtemp,l_worktemp
for i=0 to gtshu
riqi=RelativeDate(stat_sj,i)
riqishu=daynumber(riqi)
if riqishu>5 then
l_zlr=l_zlr+1
else
l_work=l_work+1
end if
next
------华软网友回复------
date aa,bb
aa = date('2005-01-01')
bb = date('2005-01-31')
int i
i = DayNumber ( aa )
if i = 5 then 
i = 1
else
i = 0
end if
date cc
cc = aa
do while cc < bb
cc = RelativeDate ( cc, 7)
i++
loop

messagebox('',string(i))

思路是:如果第一天是周几那么登记1
接着一周一周的加,在结束日期前能加几周,就又有几个星期几
------华软网友回复------
不对,不对,
应该是先算出2个日期之间有几周
那么就有几个周六周日,在判断最后期间有没有周六周日
date aa,bb
aa = date('2005-01-01')
bb = date('2005-01-31')
int i

date cc
cc = aa
do while cc < bb
cc = RelativeDate ( cc, 7)
i++
loop

cc = RelativeDate ( cc, -7)
do while cc<bb
    cc = RelativeDate ( cc, 1)
    if DayNumber ( cc) = 1 then i++
    if DayNumber ( cc) = 7 then i++
loop

------华软网友回复------
不对,不对,
应该是先算出2个日期之间有几周
那么就有几个周六周日,在判断最后期间有没有周六周日
date aa,bb
aa = date('2005-01-01')
bb = date('2005-01-31')
int i

date cc
cc = aa
do while cc < bb
cc = RelativeDate ( cc, 7)
i++
loop

cc = RelativeDate ( cc, -7)
do while cc<bb
    cc = RelativeDate ( cc, 1)
    if DayNumber ( cc) = 1 then i++
    if DayNumber ( cc) = 7 then i++
loop      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。