使用函数 if/else 语句比较日期

Comparing dates with a function if/else statement

我是一名相对较新的 Web 开发人员,最近继承了一个具有以下代码的客户端网站:

<%
    If objDbRs("Accred_Date") <> "" Then
    dim dateAcc, dateAccEnd
    dateAcc = formatDateTime(objDbRs("Accred_Date"),vbshortdate)
    dateAccEnd = DateAdd("yyyy",5,dateAcc)

    Response.write dateAcc & " to " & dateAccEnd
Else
    Response.write "<em>Accreditation information not available.</em>"
End If
%>

它仅显示给定个人资料的注册日期和编码为 5 年后的到期日期。客户已要求我的公司将此自动到期日期更改为 3 年后,而不是 5。但是,这应该只会影响在 2016 年 6 月 1 日或之后添加的配置文件,而所有较旧的配置文件将保留 5 年年.

我不是很熟悉这段代码或其语法,希望能得到一些帮助来解决这个问题。如果有人能告诉我需要进行哪些代码调整才能实现此 objective 并为该语言提供有用的语法参考源,以便我将来可以更好地处理类似的客户端请求,我将不胜感激。

这应该可以满足您的要求,但值得尝试了解此处的修改如何更改上述代码以执行您的要求。

<%
Dim dateAcc: dateAcc = objDbRs("Accred_Date") & ""
Dim dateAccEnd, NumOfYears

If dateAcc <> "" Then
    dateAcc = CDate(dateAcc)
    'Check if the Account was created on / after 1st June 2016
    'Set value of NumOfYears accordingly.
    If dateAcc >= DateSerial(2016, 6, 1) Then
        NumOfYears = 3
    Else
        NumOfYears = 5
    End If
    'Add number of years based off NumofYears to End Date.
    dateAccEnd = DateAdd("yyyy", NumOfYears, dateAcc)
    'Only string format the date after checking it.
    dateAcc = FormatDateTime(dateAcc, vbShortDate)
    dateEnd = FormatDateTime(dateEnd, vbShortDate)
    Response.write dateAcc & " to " & dateAccEnd
Else
    Response.write "<em>Accreditation information not available.</em>"
End If
%>

账户到期由这条线控制

dateAccEnd = DateAdd("yyyy", NumOfYears, dateAcc)

通过替换硬编码值 5,我们可以传递一个变量 (NumOfYears),该变量由帐户是否在 2016 年 6 月 1 日或之后创建来定义(为此使用了DateSerial(),取一系列数值的日期,年月日).

有更好的方法来构建它,但现在想保持简单。例如,硬编码 DateSerial(2016, 6, 1) 是一个坏主意,它使管理代码更加麻烦,理想情况下应该从另一个来源 (配置、数据库等) 或在最少存储为 Constant 值。


有用的链接