我是一个相对较新的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个新的配置文件年。
我并不立即熟悉此代码或其语法,并希望得到一些帮助来解决此问题。如果有人可以告诉我实现此目标需要进行哪些代码调整并提供该语言的有用的语法参考源,以便将来我能更好地处理类似的客户端请求,我将不胜感激。
这应该可以满足您的要求,但是值得尝试了解此处的修改如何更改上面的代码以完成您所要求的。
<%
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
值存储。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句