首页 > 解决方案 > 具有给定日期的每月生成

问题描述

努力实现

我在我的代码上确定了一个日期,比如 31-01-2019。然后每天我都会执行我的代码,但只在 28-02-2019/29-02-2020、31-03-2019、30-04-2019... 我希望执行代码。这有点像每月一代。另外,如果固定日期是30-01-2019,我希望在28-02-2019/29-02-2020、30-03-2019、30-04-2019执行代码...

例如

我做了什么

我已经关注了问题VBScript DateDiff month,并尝试了以下代码,但它不起作用。

如果我有一个日期,比如 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

标签: vbscriptasp-classicdatediff

解决方案


基本上,你想在每个月的最后一天运行一些东西。这意味着后天将是一个不同的月份,因此您可以执行以下操作来计算下个月的最后一天:

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

要获取任何给定月份的最后一天,请调整添加到明天日期的月数。

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


推荐阅读