Asp classic aspclassic-Datediff每月治疗30天
如何从正好30天的范围内每月计算DateDiff 示例:Asp classic aspclassic-Datediff每月治疗30天,asp-classic,datediff,Asp Classic,Datediff,如何从正好30天的范围内每月计算DateDiff 示例: 2016-03-01 2016-03-31 = 30 days 2016-04-01 2016-04-30 = 30 days 2016-05-01 2016-05-31 = 30 days 2016-06-01 2016-06-30 = 30 days total= 120 days 使用DateDiff datediff("d",cdate("2016-3-01"),cdate("2016-6-30")) retur
2016-03-01 2016-03-31 = 30 days
2016-04-01 2016-04-30 = 30 days
2016-05-01 2016-05-31 = 30 days
2016-06-01 2016-06-30 = 30 days
total= 120 days
使用DateDiff
datediff("d",cdate("2016-3-01"),cdate("2016-6-30"))
return = 121 days
我需要他考虑30天和365年的问题,因为它并不像看上去的那么简单。从代码效率的角度来看,正确的答案取决于您使用的代码语言。但是,一般来说,考虑一下这一点;
Sub Days_of_30()
' declare some Variables
Dim YBeg, YEnd, Y 'Years: Start, End, Loop Yr Val
Dim M1, M2 'Months
Dim iDif 'Day Dif
Dim nxtYR 'Required coz no GoTo
//parameters here
YBeg = 2016 'Set Start Year
YEnd = 2019 'Set End Year
//General Code
For Y = YBeg To YEnd
nxtYR = Y + 0
For M1 = 1 To 12 'Loop each Month
M2 = M1 + 1
Select Case M1
Case 12
nxtYR = Y + 1
M2 = 1
End Select
iDif = DateDiff("d", CDate(M1 & "/" & 1 & "/" & Y), _
CDate(M2 & "/" & 1 & "/" & nxtYR))
//*** Output here
If iDif = 30 Then Debug.Print CDate(M1 & "/" & 1 & "/" & Y)
Next
Next
End Sub
这应输出参数范围内的所有30天月。显然,使用GoTo语句可以使代码更加高效(更快),但是,有些人不知道如何有效地使用它们,所以大多数“现代”语言都不使用GoTo(羞耻,叹息)
假设您使用的脚本语言不隐式声明var类型,上述方法应该可以工作,但理想情况下,如果您选择的语言支持var类型声明,您应该使用它们
希望你觉得这个有用
加里