我正在尝试根据以下已知参数计算事件的总数:
开始日期 结束日期 每周的天数 每几周发生一次
例如,基于以下示例数据: - 2017年5月1日 - 2017年5月31日 - 1,4 (星期日,星期三) - 每两周一次
我需要计算此事件将运行四次(5/7、5/10、5/21、5/24)。
以下是我设置的框架。我完全无法解决如何根据经过的周数在循环中递增当前日期的问题。
开始日期 结束日期 每周的天数 每几周发生一次
例如,基于以下示例数据: - 2017年5月1日 - 2017年5月31日 - 1,4 (星期日,星期三) - 每两周一次
我需要计算此事件将运行四次(5/7、5/10、5/21、5/24)。
以下是我设置的框架。我完全无法解决如何根据经过的周数在循环中递增当前日期的问题。
<cfset local.totalRuns = 0 />
<cfset local.startDate = '2017-05-01' />
<cfset local.endDate = '2017-05-31' />
<cfset local.totalDays = DateDiff("d", local.startDate, local.endDate) />
<cfset local.daysPerWeek = '1,4' />
<cfset local.recurrence = 2 />
<cfset local.currentLoop = 0 />
<cfset local.weeksToCount = local.recurrence * 2 />
<!--- Loop a day at a time --->
<cfloop from="#local.startDate#" to="#local.endDate#" index="local.thisDay" step="#createTimespan(1, 0, 0, 0)#">
<cfset local.currentDate = local.thisDay />
<!--- Loop over each allowed day of the current week and determine actual date --->
<cfloop list="#local.daysPerWeek#" index="local.currentDay">
<!--- if current date does not exceed the end date add increment (this current is incorrect) --->
<cfif DateDiff("d", local.currentDate, local.endDate) LTE 0>
<cfset local.totalRuns++ />
</cfif>
</cfloop>
<cfset local.currentLoop++ />
</cfloop>
local.totalRuns
将是我返回给调用脚本的总出现次数。 - justacoder