ASP Classic中的DateAdd函数如何与“ ww”周选项一起使用?

时间:2018-11-28 07:00:03

标签: vbscript asp-classic

我必须从旧的ASP经典代码库中复制C#中的功能。

代码库似乎假设年份最多可以有54周,并使用带有“ ww”选项的DateAdd方法来找出“周ID”,以便对某些文件进行分类。

我发现的所有在线文档似乎都忽略了这个问题,直接阅读它表明增加周数与增加(weeks * 7)天相同,但是,我不想破坏向后兼容性。我认为旧代码有一个错误,但是我不想假设它。一年中可能有54个不同星期的日子,但我认为做一个大于52的值的DateAdd是没有道理的。

我的问题是

DateAdd("ww", x, date) 

工作吗?

等于

date.AddDays(7 * x) 

在C#中?

在某些情况下,一月的第一天(例如)是星期六,而DateAdd(“ ww”,53,date)可以返回同一年的有效日期吗?

1 个答案:

答案 0 :(得分:2)

我可以告诉你DateAdd("ww", i, date)等同于DateAdd("d", 7*i, date);因此,只要C#vbScript中的两个函数具有相同的含义,它们必须等效。

为确保DateAdd("ww", i, date)等同于DateAdd("d", 7*i, date),我使用了下面的脚本,它周期为2年,并且每天,如果以某种方式增加天数或增加周数不匹配,则周期为104周。错误。

date0 = Date()

For i = 0 to 2 * 365
    date1 = DateAdd("d", i, date0)
    For j = 0 to 2 * 53
        date2  = DateAdd("d", j * 7, date1)
        date3  = DateAdd("WW", j, date1)
        assert = DateDiff("s", date2, date3)

        If assert <> 0 Then
            errMsg = _
                "OPS addDays And addWeeks unmatched" &_
                vbCrLf &_
                CStr(date1) & vbTab &_
                CStr(date2) & vbTab &_
                CStr(date3) & vbTab &_
                assert & vbTab

            Call Err.Raise(vbObjectError + 10, "Test DateAdd(""ww"", i, date)", errMsg)
        End If
    Next
Next

所以我想您可以使用date.AddDays(7 * x)替换DateAdd("ww", x, date),而不必担心日期不匹配。