根据星期数和天数asp经典来获取它的日期?

时间:2016-01-24 12:16:51

标签: vbscript asp-classic

我需要根据周数和天数知道它的日期。

所以,如果我有daynr = 3和day = 1(今天 - 星期日),让我们说年份= 2016,我怎么能把它变成2016-01-24。

任何输入都非常感谢,谢谢。

2 个答案:

答案 0 :(得分:2)

您的最佳帮助将是DatePart功能(有关文档,请参阅here)。它并非完全直截了当,因为可以考虑选择“一周的第一天”和“一年中的第一周”,但您可以在DatePart中定义这些选项。

这将是我的解决方案:

option explicit

function getDateByWeek(year, week, day)
    dim dt, woy, add_days

    dt = DateSerial(year, 1, 1)
    do
        woy = DatePart("ww", dt, vbSunday, vbFirstFullWeek)
        ' possibly change options [,firstdayofweek[,firstweekofyear]]
        dt = DateAdd("d", 1, dt)
    loop while woy<>1

    add_days = week * 7 + day - 2
    ' -1 because we already added one day extra in the loop
    ' -1 to correct given day (sunday = 1)

    getDateByWeek = DateAdd("d", add_days, dt)
end function

Response.Write "RESULT: " & getDateByWeek(2016, 3, 1) '  -> 24.01.2016

我首先在循环中找到第一周的第一天,然后添加累计天数以获得结果。

答案 1 :(得分:0)

最好的方法是弄清楚今年的一周开始是什么,并从那里开始。

首先,任何一年的第一个星期四总是在一年的第一周,因此在1月1日添加正确数字的简单计算是显而易见的。在此之后,我们简单地多了几周,并添加日期:

Const C_THURSDAY = 5
Function GetDateFromYWD(y, w, d)
    Dim tDate, aDate
    'Get the first of the year...
    tDate = DateSerial(y, 1, 1)
    'Workout the start of the first week in the year...
    aDate = tDate + Int(WeekDay(tDate)>C_THURSDAY And 7) - WeekDay(tDate)
    'Add on the number of weeks plus days we're looking for...
    aDate = aDate + (w * 7) + d
    GetDateFromYWD = aDate
End Function