获得当前星期一?

时间:2013-10-22 17:18:25

标签: asp-classic vbscript

我有一个名为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日之前的任何东西都是绿色的,否则就会变成红色。

3 个答案:

答案 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