Vbscript 具有给定日期的每月生成

Vbscript 具有给定日期的每月生成,vbscript,asp-classic,datediff,Vbscript,Asp Classic,Datediff,努力实现 sFixedDate = "2019-01-31" '==== Fixed sProcessDate = "2019-02-28" '==== Changes daily d1 = CDate(sFixedDate) d2 = CDate(sProcessDate) diff = DateDiff("m", d1, d2) If request("btnProcess") <> "" Then If diff Mod 1 = 0 Then '=== Not

努力实现

sFixedDate = "2019-01-31" '==== Fixed
sProcessDate = "2019-02-28"  '==== Changes daily

d1 = CDate(sFixedDate)
d2 = CDate(sProcessDate)

diff = DateDiff("m", d1, d2)

If request("btnProcess") <> "" Then
    If diff Mod 1 = 0 Then  '=== Not as simple as I thought
        '=== Trying to do monthly GENERATION. 
        '===Excecute the CODE
    End If
End If
我在我的密码上定了一个日期,比如说2019年1月31日。然后每天我都会执行我的代码,但只有在2019年2月28日/2020年2月29日、2019年3月31日、2019年4月30日。。。我希望执行代码。这有点像每月的一代人。此外,如果固定日期为2019年1月30日,我希望在2019年2月28日/2020年2月29日、2019年3月30日、2019年4月30日执行代码

例如

sFixedDate = "2019-01-31" '==== Fixed
sProcessDate = "2019-02-28"  '==== Changes daily

d1 = CDate(sFixedDate)
d2 = CDate(sProcessDate)

diff = DateDiff("m", d1, d2)

If request("btnProcess") <> "" Then
    If diff Mod 1 = 0 Then  '=== Not as simple as I thought
        '=== Trying to do monthly GENERATION. 
        '===Excecute the CODE
    End If
End If
我所做的

sFixedDate = "2019-01-31" '==== Fixed
sProcessDate = "2019-02-28"  '==== Changes daily

d1 = CDate(sFixedDate)
d2 = CDate(sProcessDate)

diff = DateDiff("m", d1, d2)

If request("btnProcess") <> "" Then
    If diff Mod 1 = 0 Then  '=== Not as simple as I thought
        '=== Trying to do monthly GENERATION. 
        '===Excecute the CODE
    End If
End If
我遵循了这个问题,并尝试了以下代码,但它不起作用

如果我有一个日期,比如DateAdd前的2010年1月31日

endFeb = DateAdd("m",1,"31-Jan-10")
endMar = DateAdd("m",1,endFeb)
endApr = DateAdd("m",1,endMar)
结果

endFeb: 28/02/2010
endMar: 28/03/2010
endApr: 28/04/2010
我想要的是

endFeb: 28/02/2010
endMar: 31/03/2010
endApr: 30/04/2010
代码

sFixedDate = "2019-01-31" '==== Fixed
sProcessDate = "2019-02-28"  '==== Changes daily

d1 = CDate(sFixedDate)
d2 = CDate(sProcessDate)

diff = DateDiff("m", d1, d2)

If request("btnProcess") <> "" Then
    If diff Mod 1 = 0 Then  '=== Not as simple as I thought
        '=== Trying to do monthly GENERATION. 
        '===Excecute the CODE
    End If
End If
sFixedDate=“2019-01-31”==固定
sProcessDate=“2019-02-28”===每日变化
d1=CDate(sFixedDate)
d2=CDate(sProcessDate)
差异=日期差异(“m”,d1,d2)
如果请求(“btnProcess”)“”则
如果diff Mod 1=0,那么'===并不像我想象的那么简单
'==尝试每月生成一次。
'==执行代码
如果结束
如果结束

基本上,您希望在每个月的最后一天运行一些东西。这意味着第二天将是一个不同的月份,因此您可以这样做来计算下个月的最后一天:

today    = Date
tomorrow = today + 1
If request("btnProcess") <> "" Then
    If Month(today) <> Month(tomorrow) Then
        endNextMonth = DateAdd("m", 1, tomorrow) - 1
    End If
End If
今天=日期
明天=今天+1
如果请求(“btnProcess”)“”则
如果月(今天)月(明天)那么
endNextMonth=DateAdd(“m”,1,明天)-1
如果结束
如果结束
要获取任何给定月份的最后一天,请调整要添加到明天日期的月份数


以上假设您在一个月的最后一天进行计算。如果您想在一个月的任何一天计算任何给定月份的最后一天,请参见。

基本上,您希望在每个月的最后一天运行某些内容。这意味着第二天将是一个不同的月份,因此您可以这样做来计算下个月的最后一天:

today    = Date
tomorrow = today + 1
If request("btnProcess") <> "" Then
    If Month(today) <> Month(tomorrow) Then
        endNextMonth = DateAdd("m", 1, tomorrow) - 1
    End If
End If
今天=日期
明天=今天+1
如果请求(“btnProcess”)“”则
如果月(今天)月(明天)那么
endNextMonth=DateAdd(“m”,1,明天)-1
如果结束
如果结束
要获取任何给定月份的最后一天,请调整要添加到明天日期的月份数

以上假设您在一个月的最后一天进行计算。如果您想在一个月的任何一天计算任何给定月份的最后一天,请参阅。

使用DateSerial:

For m = 1 To 13
     d1 = DateSerial(2019, m, 1) ' First day of month is easy
     d2 = DateAdd("d", d1, -1)   ' Last day of previous month is just 1 day before
     WScript.Echo m, d1, d2
Next

cscript lom.vbs
1 01.01.2019 31.12.2018
2 01.02.2019 31.01.2019
3 01.03.2019 28.02.2019
4 01.04.2019 31.03.2019
5 01.05.2019 30.04.2019
6 01.06.2019 31.05.2019
7 01.07.2019 30.06.2019
8 01.08.2019 31.07.2019
9 01.09.2019 31.08.2019
10 01.10.2019 30.09.2019
11 01.11.2019 31.10.2019
12 01.12.2019 30.11.2019
13 01.01.2020 31.12.2019
使用日期序列:

For m = 1 To 13
     d1 = DateSerial(2019, m, 1) ' First day of month is easy
     d2 = DateAdd("d", d1, -1)   ' Last day of previous month is just 1 day before
     WScript.Echo m, d1, d2
Next

cscript lom.vbs
1 01.01.2019 31.12.2018
2 01.02.2019 31.01.2019
3 01.03.2019 28.02.2019
4 01.04.2019 31.03.2019
5 01.05.2019 30.04.2019
6 01.06.2019 31.05.2019
7 01.07.2019 30.06.2019
8 01.08.2019 31.07.2019
9 01.09.2019 31.08.2019
10 01.10.2019 30.09.2019
11 01.11.2019 31.10.2019
12 01.12.2019 30.11.2019
13 01.01.2020 31.12.2019
dtLoan=CDate(“2019-01-30”)
dtProcess=CDate(“2020-02-28”)
“dtLoan=CDate(2019-01-31”)
“dtProcess=CDate”(“2020-02-29”)
“dtLoan=CDate(2019-02-28”)
“dtProcess=CDate”(“2020-02-29”)
如果LastDateOfMonth(dtLoan)=dtLoan,dtProcess=LastDateOfMonth(dtProcess),则
回复。写下“这意味着贷款日期是本月底,比如1月31日、2月28日、2月29日、2月31日”
response.write“并且处理日期也是月末”&“
” response.write“****月末贷款日期:&dtLoan&”
” response.write“****月末处理日期:&dtProcess&“
” 如果LastDateOfMonth(dtLoan)dtLoan和dtProcess LastDateOfMonth(dtProcess),则 daysFromEndOfLoanMth=DateDiff(“d”,最后一个月的日期(dtLoan),dtLoan) 回复。填写“从贷款月底算起的天数:&daysFromEndOfLoanMth&”
“ daysFromEndOfProcessMth=DateAdd(“d”,daysFromEndOfLoanMth,LastDateOfMonth(dtProcess)) response.write“从月底开始添加”&daysFromEndOfLoanMth&“Days=”&daysFromEndOfProcessMth&“
” response.write“处理日期:&dtProcess&“
” dtShouldProcess=日(dtLoan)&“/”月(dtProcess)&“/”年(dtProcess) 如果是isDate(dtShouldProcess),则 dtShouldProcess=CDate(dtShouldProcess) 其他的 dtShouldProcess=daysFromEndOfProcessMth 如果结束 response.write“**应处理的日期:*”&dtShouldProcess&“
” 如果dtProcess=dtShouldProcess,则 '如果dtProcess=daysFromEndOfProcessMth,则 回复。写“****贷款日期:&dtLoan&”
” response.write“**”处理日期:&dtProcess&“
” 如果结束 'daysFromEndOfProcessMth=DateDiff(“d”,最后一个月的日期(dtProcess1),dtProcess1) 'response.write“从处理日期到月末的天数:&daysFromEndOfProcessMth&”
“ 如果结束
dtLoan=CDate(“2019-01-30”)
dtProcess=CDate(“2020-02-28”)
“dtLoan=CDate(2019-01-31”)
“dtProcess=CDate”(“2020-02-29”)
“dtLoan=CDate(2019-02-28”)
“dtProcess=CDate”(“2020-02-29”)
如果LastDateOfMonth(dtLoan)=dtLoan,dtProcess=LastDateOfMonth(dtProcess),则
回复。写下“这意味着贷款日期是本月底,比如1月31日、2月28日、2月29日、2月31日”
response.write“并且处理日期也是月末”&“
” response.write“****月末贷款日期:&dtLoan&”
” response.write“****月末处理日期:&dtProcess&“
” 如果LastDateOfMonth(dtLoan)dtLoan和dtProcess LastDateOfMonth(dtProcess),则 daysFromEndOfLoanMth=DateDiff(“d”,最后一个月的日期(dtLoan),dtLoan) 回复。填写“从贷款月底算起的天数:&daysFromEndOfLoanMth&”
“ daysFromEndOfProcessMth=DateAdd(“d”,daysFromEndOfLoanMth,LastDateOfMonth(dtProcess)) response.write“从月底开始添加”&daysFromEndOfLoanMth&“Days=”&daysFromEndOfProcessMth&“
” response.write“处理日期:&dtProcess&“
” dtShouldProcess=日(dtLoan)&“/”月(dtProcess)&“/”年(dtProcess) 如果是isDate(dtShouldProcess),则 dtShouldProcess=CDate(dtShouldProcess) 其他的