7,763
社区成员
发帖
与我相关
我的任务
分享
Dim date1 As Date
Dim date2 As Date
Dim tempdate As Date
Dim week1 As Long
Dim week2 As Long
Dim weeks As Long
Dim i As Long
Text1.Text = ""
date1 = DTPicker1.Value
date2 = DTPicker2.Value
week1 = DateDiff("ww", Year(date1) & "-" & Month(date1) & "-01", date1, vbMonday, vbFirstJan1) + 1
week2 = DateDiff("ww", Year(date2) & "-" & Month(date2) & "-01", date2, vbMonday, vbFirstJan1)
weeks = DateDiff("ww", date1, date2) - 1
Text1.Text = Text1.Text & "日期一为" & Month(date1) & "月第:" & week1 & "周" & vbCrLf
Text1.Text = Text1.Text & "日期二为" & Month(date2) & "月第:" & week2 & "周" & vbCrLf
Text1.Text = Text1.Text & "日期一与日期二相隔:" & weeks & "周" & vbCrLf
For i = 0 To weeks - 1
tempdate = DateAdd("ww", i, date1)
Text1.Text = Text1.Text & Month(tempdate) & "月的第" & DateDiff("ww", Year(tempdate) & "-" & Month(tempdate) & "-01", tempdate, vbMonday, vbFirstJan1) + 1 & "周" & vbCrLf
Next
Dim date1 As Date
Dim date2 As Date
Dim tempdate As Date
Dim week1 As Long
Dim week2 As Long
Dim weeks As Long
Dim i As Long
Text1.Text = ""
date1 = DTPicker1.Value
date2 = DTPicker2.Value
week1 = DateDiff("ww", Year(date1) & "-" & Month(date1) & "-01", date1, vbMonday, vbFirstJan1) + 1
week2 = DateDiff("ww", Year(date2) & "-" & Month(date2) & "-01", date2, vbMonday, vbFirstJan1) + 1
weeks = DateDiff("ww", date1, date2)
Text1.Text = Text1.Text & "日期一为" & Month(date1) & "月第:" & week1 & "周" & vbCrLf
Text1.Text = Text1.Text & "日期二为" & Month(date2) & "月第:" & week2 & "周" & vbCrLf
Text1.Text = Text1.Text & "日期一与日期二相隔:" & weeks & "周" & vbCrLf
For i = 0 To weeks - 1
tempdate = DateAdd("ww", i, date1)
Text1.Text = Text1.Text & Month(tempdate) & "月的第" & DateDiff("ww", Year(tempdate) & "-" & Month(tempdate) & "-01", tempdate, vbMonday, vbFirstJan1) + 1 & "周" & vbCrLf
Next
Private Sub Command1_Click()
Dim date1 As Date
Dim date2 As Date
date1 = DTPicker1.Value
date2 = DTPicker2.Value
Debug.Print "日期一为第:" & DateDiff("ww", Year(date1) & "-" & Month(date1) & "-01", date1, vbMonday, vbFirstJan1) & "周"
Debug.Print "日期二为第:" & DateDiff("ww", Year(date2) & "-" & Month(date2) & "-01", date2, vbMonday, vbFirstJan1) & "周"
End Sub
Private Sub Form_Load()
DTPicker1.Value = "2008-08-18"
DTPicker2.Value = "2008-08-24"
End Sub
Option Explicit
Private Sub Command1_Click()
Dim a() As Date
a = cWeekDate(2008, 52)
MsgBox a(0) '2008年第52周的起始日
MsgBox a(1) '2008年第52周的终止日
a = cWeekDate(2008, 2,8)
MsgBox a(0) '2008年8月份第2周起始日
MsgBox a(1) '2008年8月份第2周终止日
End Sub
Public Function cWeekDate(ByVal cYear As Long, cWeek As Long, Optional ByVal cMonth As Long) As Date()
Dim vDate(1) As Date
Dim cDay As Long
cWeekDate = vDate
'每个月的第一周为满周.第一天为周一,最后一天为周日
'不设定cMouth 的值,或值等于0 则返回的是以年为单位的周。
' 比如: cWeekDate(2008,13,0) 或 cweekdate(2008,13) 返回的是2008年的第十三周的起始及终止日
' 比如: cWeekDate(2008,1,8) 返回的是2008年8月份的第1周的起始及终止日
'
If cWeek < 1 Then Exit Function
If cMonth > 0 And cMonth < 13 Then
If Weekday(cYear & "/" & cMonth & "/01") > 2 Then
cDay = (9 - Weekday(cYear & "/" & cMonth & "/01")) + (cWeek - 1) * 7
vDate(0) = DateAdd("d", cDay, cYear & "/" & cMonth & "/01")
If Month(vDate(0)) <> cMonth Then
Exit Function
End If
vDate(1) = DateAdd("d", 7, vDate(0))
End If
Else
If Weekday(cYear & "/01/01") > 2 Then
cDay = (9 - Weekday(cYear & "/01/01")) + (cWeek - 1) * 7
vDate(0) = DateAdd("d", cDay, cYear & "/01/01")
If Year(vDate(0)) <> cYear Then
Exit Function
End If
vDate(1) = DateAdd("d", 7, vDate(0))
End If
End If
cWeekDate = vDate
End Function