使用函数 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
值。
有用的链接
我是一名相对较新的 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
值。