这里的“某一周”是有歧义的:
一种可能是某日期所在的周
第二种是某年的第几周。这还有歧义。因为某年的第一周,可能开始于上一年,同时这一周也是上一年的最后一周,会重复计算。我们这里假设“不管是否重复计算”
第三种是每周从星期几开始。我们这里假设“从星期一开始”。
下面分别是输出“某日期所在的周始终日期”、“某年某周始终日期”、“某年各周始终日期”的代码!
如果每周从星期日开始,将vbMonday替换为vbSunday即可。
'某日期所在的周始终日期
Private Sub Command3_Click()
Dim dt As Date
Dim wd As Integer
dt = InputBox("请输入一个日期(Date格式):", "输入日期", Date)
wd = Weekday(dt, vbMonday) '某日是星期几,周一为第一天
firstDay = DateAdd("d", -wd + 1, dt) '本周的开始日期
endDay = DateAdd("d", 7 - wd, dt) '本周的开始日期
Text1.Text = "当前日期所在的周起止日期:"
Text1.Text = Text1.Text & vbNewLine
Text1.Text = Text1.Text & vbNewLine & "每周从星期一开始"
Text1.Text = Text1.Text & vbNewLine & firstDay & vbTab & endDay
wd = Weekday(dt, vbSunday) '某日是星期几,周日为第一天
firstDay = DateAdd("d", -wd + 1, dt) '本周的开始日期
endDay = DateAdd("d", 7 - wd, dt) '本周的开始日期
Text1.Text = Text1.Text & vbNewLine
Text1.Text = Text1.Text & vbNewLine & "每周从星期日开始"
Text1.Text = Text1.Text & vbNewLine & firstDay & vbTab & endDay
End Sub
'某年某周始终日期
Private Sub Command4_Click()
Dim y As Integer
Dim w As Integer
Dim dt As Date
Dim wd As Integer
y = InputBox("请输入年份:", "输入年份", Year(Date))
dt = DateSerial(y, 1, 1)
w = InputBox("请输入周数:", "第几周", "")
dt = DateAdd("ww", (w - 1), dt)
wd = Weekday(dt, vbMonday) '某日是星期几,周一为第一天
firstDay = DateAdd("d", -wd + 1, dt) '本周的开始日期
endDay = DateAdd("d", 7 - wd, dt) '本周的开始日期
Text1.Text = "当前日期所在的周起止日期:"
Text1.Text = Text1.Text & vbNewLine
Text1.Text = Text1.Text & vbNewLine & "每周从星期一开始"
Text1.Text = Text1.Text & vbNewLine & firstDay & vbTab & endDay
End Sub
'某年各周始终日期
Private Sub Command2_Click()
Dim y As Integer
Dim w As Integer
Dim dt As Date
Dim dte As Date
Dim wd As Integer
y = InputBox("请输入年份:", "输入年份", Year(Date))
dt = DateSerial(y, 1, 1)
dte = DateAdd("yyyy", 1, dt) - 1 '某年最后一天
wd = Weekday(dt, vbMonday) '某日是星期几,周一为第一天
firstDay = DateAdd("d", -wd + 1, dt) '本周的开始日期
endDay = firstDay + 6 '本周的开始日期
Text1.Text = "当前日期所在的周起止日期:"
Text1.Text = Text1.Text & vbNewLine & "(每周从星期一开始)"
Text1.Text = Text1.Text & vbNewLine
Text1.Text = Text1.Text & vbNewLine & firstDay & vbTab & endDay
Do While endDay < dte
w = w + 1
firstDay = firstDay + 7
endDay = firstDay + 6
Text1.Text = Text1.Text & vbNewLine & firstDay & vbTab & endDay
Loop
End Sub
温馨提示:答案为网友推荐,仅供参考