我有一个名为strRDate
的日期字符串和另一个名为strColor
的字符串。
截止日期是星期一这个星期。
我希望是这样的:
'// strRDate format is MM/DD/YYYY
Dim strRDate,strColor
strRDate="1/1/1999"
strColor="none"
If strRDate is this weeks Monday or older then <-- HOW DO I DO THIS ???
strColor="green"
else
strColor="red"
end if
所以2013年10月21日之前的任何东西都是绿色的,否则就会变成红色。
答案 0 :(得分:2)
' for successful parsing of mm/dd/yyyy dates (1033 is EN_US)
Response.LCID = 1033
Dim strRDate, strColor
strRDate = "10/21/2013"
strColor = GetColor(ParseDate(strRDate))
和一些辅助函数:
Function GetColor(d)
GetColor = "none"
If IsDate(d) Then
If d <= GetMondayForWeek(Now()) Then
GetColor = "green"
Else
GetColor = "red"
End If
End If
End Function
Function ParseDate(strDate)
ParseDate = vbEmpty
If IsDate(strDate) Then
ParseDate = CDate(strDate)
End If
End Function
Function GetMondayForWeek(d)
' midnight
GetMondayForWeek = CDate(Fix(d))
While Weekday(GetMondayForWeek) <> vbMonday
GetMondayForWeek = GetMondayForWeek - 1
Wend
End Function
答案 1 :(得分:1)
我可能会这样计算:
strRDate = "1/1/1999"
strColor = "none"
monday = Date - (Weekday(Date, vbMonday) - 1)
If CDate(strRDate) <= monday Then
strColor="green"
Else
strColor="red"
End If
Weekday(Date, vbMonday)
为一周中的每一天返回1到7之间的值,星期一是第一天:
Monday → 1
Tuesday → 2
Wednesday → 3
Thursday → 4
Friday → 5
Saturday → 6
Sunday → 7
从函数的返回值中减去1,得到当前日期和最近一个星期一之间的天数差异。从当前日期中减去这个差异会得到最近一个星期一的日期,然后您可以将其与输入日期进行比较(使用CDate
函数将字符串转换为实际日期)。
答案 2 :(得分:0)
这个日期是星期一,可以通过减去星期()并调整星期一的工作日来计算:
WScript.Echo "german locate (dd.mm.yyyy):"
Dim dtCur : dtCur = #10/10/2013#
Do Until dtCur > #10/24/2013#
Dim dtThisMonday : dtThisMonday = DateAdd("d", -WeekDay(dtCur) + 2, dtCur)
Dim isAfterThisMonday : isAfterThisMonday = dtCur > dtThisMonday
WScript.Echo dtCur, WeekDay(dtCur), WeekdayName(WeekDay(dtCur), True), dtThisMonday, CStr(isAfterThisMonday)
dtCur = DateAdd("d", 1, dtCur)
Loop
输出:
german locate (dd.mm.yyyy):
10.10.2013 5 Thu 07.10.2013 True
11.10.2013 6 Fri 07.10.2013 True
12.10.2013 7 Sat 07.10.2013 True
13.10.2013 1 Sun 14.10.2013 False
14.10.2013 2 Mon 14.10.2013 False
15.10.2013 3 Tue 14.10.2013 True
16.10.2013 4 Wed 14.10.2013 True
17.10.2013 5 Thu 14.10.2013 True
18.10.2013 6 Fri 14.10.2013 True
19.10.2013 7 Sat 14.10.2013 True
20.10.2013 1 Sun 21.10.2013 False
21.10.2013 2 Mon 21.10.2013 False
22.10.2013 3 Tue 21.10.2013 True
23.10.2013 4 Wed 21.10.2013 True
24.10.2013 5 Thu 21.10.2013 True