如何把一年中的星期六和星期天都找出来?
用什么函数能把星期六和星期天都找到
或者一种什么判断方法也行
[解决办法]
Option ExplicitPrivate Sub Command1_Click() Dim strStartDay As String Dim strToday As String Dim intP As Integer Dim intWeekDay As Integer strStartDay = "2012-01-01" For intP = 0 To 364 strToday = DateAdd("d", intP, strStartDay) intWeekDay = Weekday(strToday) If intWeekDay = 7 Then List1.AddItem strToday & ";周六" ElseIf intWeekDay = 1 Then List1.AddItem strToday & ";周日" End If Next intPEnd Sub
[解决办法]
Weekday 函数
返回一个 Variant (Integer),包含一个整数,代表某个日期是星期几。
语法
Weekday(date, [firstdayofweek])
Weekday 函数语法有下列的命名参数:
部分 描述
date 必要。能够表示日期的 Variant、数值表达式、字符串表达式或它们的组合。如果 date 包含 Null,则返回 Null。
Firstdayofweek 可选。指定一星期第一天的常数。如果未予指定,则以 vbSunday 为缺省值。
设置
firstdayofweek 参数有以下设定值:
常数 值 描述
vbUseSystem 0 使用 NLS API 设置。
VbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
返回值
Weekday 函数可以返回以下诸值:
常数 值 描述
vbSunday 1 星期日
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
[解决办法]
星期六和星期天是循环的,星期到星期天都是间隔5天.
每年365/366天,合52星期,星期六的天数不会超过54次.
找到第一个星期六(从开始日期开始,不会超过7天),接下来没隔5天输出一个星期6,一个星期天.
Dim StartDay As StringDim dateStartDay As Date, dateEndDay As DateDim i As DateStartDay = "2012-1-1"dateStartDay = CDate(StartDay)dateEndDay = CDate(Year(StartDay) + 1 & "-" & Month(StartDay) & "-" & Day(StartDay)) - 1For i = 0 To 7 If Weekday(dateStartDay + i) = 7 Then Exit ForNext idateStartDay = dateStartDay + iFor i = dateStartDay To dateEndDay Debug.Print i, Weekday(i) i = i + 1 Debug.Print i, Weekday(i) i = i + 5Next i
[解决办法]
Module:Public Function Get_First_Saturday(ByVal myYear As Integer) As DateDim i As DateFor i = CDate(myYear & "-01-01") To CDate(myYear & "-01-07") If Weekday(i, vbSaturday) = 1 Then Get_First_Saturday = i Exit Function End IfNext iEnd FunctionForm:Private Sub Command1_Click() Dim my_saturday As Date, my_sunday As Date my_saturday = Get_First_Saturday(2012) Do my_sunday = my_saturday + 1 List1.AddItem my_saturday List2.AddItem my_sunday my_saturday = my_saturday + 7 Loop While Year(my_saturday) = 2012 End Sub
[解决办法]
我的想法:
首先按天计数,并得到第一个周六的天数,比如第5天.
然后用个FOR循环,STEP设置为6,得到每次执行的天数,记为周六,再将循环变量加1,继续循环直到结束.
将每个周六天数换算成日期,再将这个天数加1换算成日期得到周日.
代码就不写了
[解决办法]