VB6.0 要得到某一周是从哪一天开始的,哪一天结束的?

VB6.0 要得到某一周是从哪一天开始的,哪一天结束的?不要.NET的要VB6.0的代码或者是关键的函数就可以了

这里的“某一周”是有歧义的:
一种可能是某日期所在的周
第二种是某年的第几周。这还有歧义。因为某年的第一周,可能开始于上一年,同时这一周也是上一年的最后一周,会重复计算。我们这里假设“不管是否重复计算”
第三种是每周从星期几开始。我们这里假设“从星期一开始”。

下面分别是输出“某日期所在的周始终日期”、“某年某周始终日期”、“某年各周始终日期”的代码!

如果每周从星期日开始,将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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-24
Dim d As Date, w As Integer
d = #1/1/2013# - Weekday(#1/1/2013#) + 1
w = 1
Debug.Print "2013年各周起止日期:"
Do While d < #1/1/2014#
Debug.Print "第" & w & "周:" & d & " - " & d + 6
d = d + 7
w = w + 1
Loop
第2个回答  2013-10-24
VB6 中要通过函数 Format() 及 DateAdd() 运算后才能知道,没有直接给出结果的函数。
如:想知道从2013年01月01日起第30周的周一对应的日期及周 对应的日期

Dim w As Integer ‘需要计算的周数
Dim t As Integer

Dim R1 As Date '计算出周一的日期
Dim R2 As Date '计算出周日的日期

' 要计算第30周
w = 30

R1 = DateAdd("ww", (w - 1), "2013/01/01")
t = Format(r1, "w", vbMonday)

Select Case t
Case 2
R1 = DateAdd("d", -1, r1)
Case 3
R1 = DateAdd("d", -2, r1)
Case 4
R1 = DateAdd("d", -3, r1)
Case 5
R1 = DateAdd("d", -4, r1)
Case 6
R1 = DateAdd("d", -5, r1)
Case 7
R1 = DateAdd("d", -6, r1)
End Select
R2 = DateAdd("d", 6, R1)

这样 R1,R2 分别就是要计算出第30周的周一对应的日期及周日对应的日期了.
注意:程序中的 case 3,4,5,6,7 也许不能执行了,因为2013/01/01是周二,所以从2013/01/01开始的所有周的开始都是周二,所以程序中只有 Case 2 在执行了,除非你改变计算的开始日期。
相似回答