Foxtable(狐表)用户栏目专家坐堂 → 请问如何确定两个日期之间有几个星期一?


  共有6388人关注过本帖树形打印复制链接

主题:请问如何确定两个日期之间有几个星期一?

帅哥哟,离线,有人找我吗?
don
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/5/31 17:36:00 [显示全部帖子]

以下是引用狐狸爸爸在2013-5-31 16:50:00的发言:

没有的,只能自己写代码:

 

Dim dt1 As Date = #1/1/2012#
Dim dt2 As Date = #5/20/2012#
Dim dt As Date
Dim cnt As Integer
For i As Integer = 0 To (dt2-dt1).TotalDays
    dt = dt1.AddDays(i)
    If dt.DayOfWeek = 1 Then
        cnt = cnt + 1
    End If
Next
output.show(cnt)


=====================

這太低效了吧!


Dim dt1 As Date = #1/1/2000#

Dim dt2 As Date = #12/1/2012#

Dim n1 As Integer


n1 =dt1.DayOfWeek

dt1 = dt1.addDays(1-n1 )

dt2 = dt2.addDays(1-n1)

n1 = Int(((dt2-dt1).TotalDays+1)/7)+1

If  dt2.DayOfWeek = 1 Then n1+=1


Output.Show(n1)




[此贴子已经被作者于2013-5-31 18:45:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
don
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/6/1 12:09:00 [显示全部帖子]

以下是引用狐狸爸爸在2013-6-1 10:23:00的发言:
呵呵,你这个太伤脑细胞了。
哈哈,還真是個簡單快樂人啊!可惜投錯了胎,上天讓你做個編程的人,不由你了!


 回到顶部
帅哥哟,离线,有人找我吗?
don
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/6/1 12:37:00 [显示全部帖子]

修正一下:

Dim dt1 As Date = #6/3/2013#
Dim dt2 As Date = #6/24/2013#
Dim dt As Date
Dim cnt As Integer
For i As Integer = 0 To (dt2-dt1).TotalDays
    dt = dt1.AddDays(i)
    If dt.DayOfWeek = 1 Then
        cnt = cnt + 1
    End If
Next
output.show("老大低效率但準確的 ===> " & cnt)

'===============================
Dim n1 As Integer
Dim d1,d2 As Date
n1 =dt1.DayOfWeek

d1 = dt1.addDays(1-n1 )
d2 = dt2.addDays(1-n1)
n1 = Int(((d2-d1).TotalDays+1)/7)+1
n1+=iif(dt2.DayOfWeek =0,-1,0)

output.show("測試高效率的 ===> " & n1)

 回到顶部
帅哥哟,离线,有人找我吗?
don
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/6/3 17:34:00 [显示全部帖子]

以下是引用傻马难骑在2013-6-1 14:41:00的发言:


Dim dt1 As Date = #6/1/2013#
Dim dt2 As Date = #6/17/2013#
Dim n1,n As Integer

n1 =dt1.DayOfWeek
dt1 = dt1.addDays((8-n1) Mod 7)
n = Int(((dt2-dt1).TotalDays)/7)+1

 

Output.Show(n)

 

'可以将dt1和dt2修改成周一、周日、周二这种有代表性的值进行测试,看看结果与日历上的是否一致


==============================================

高!學習!!在你的基礎上改為更通用的:求星期一至星期日


1  ===> 星期一
2  ===> 星期二
3  ===> 星期三
4  ===> 星期四
5  ===> 星期五
6  ===> 星期六
7  ===> 星期日


'求星期六:


Dim dt1 As Date = #5/1/2013#

Dim dt2 As Date = #5/31/2013#

Dim n1,n2,n3,i As Integer


i = 6    '求星期六: 1-7分別對應星期一至星期日

n1 =dt1.DayOfWeek  

dt1 = dt1.addDays((7+i-n1) Mod 7) 

n2 = Int((dt2-dt1).TotalDays/7)+1

 

Output.Show(n2)



'求本月有幾個雙休日


Dim n1,n2,i As Integer

Dim dt1 ,dt2 As Date 

dt1 = Date.Today

dt1 =New date(dt1.year,dt1.Month,1)

dt2 =New date(dt1.year,dt1.Month,Date.DaysinMonth(dt1.year,dt1.Month))


i = 6  

n1 =dt1.DayOfWeek  

dt1 = dt1.addDays((7+i-n1) Mod 7) 

n2 = Int((dt2-dt1).TotalDays/7)+1

 

i =7

dt1 = dt1.addDays((7+i-n1) Mod 7) 

n2+ = Int((dt2-dt1).TotalDays/7)+1


Output.Show(n2)


[此贴子已经被作者于2013-6-3 18:49:43编辑过]

 回到顶部