2017-05-24 47 views
1

我正在尝试在Coldfusion中创建一个函数,该函数将在每月的周中创建一个事件,而不是每月的一天。在本月的第一周安排事件,COLDFUSION

一个例子是该事件应该安排在每个月的第二个星期,而不是一个月的第二个星期二。

但是,我遇到过这样的问题,即月份可能会有4到6周的时间,如果有人在本月的第5或第6周安排了活动,那么在几个月内不会重复没有5周或6周。

我对如何解决这个问题感到不知所措,所以任何头脑风暴的建议将不胜感激。

+0

一周可以是7天之一。你想让这个活动每天都在这个星期或某个特定的日子举行吗? –

+2

这将取决于几件事情。本月的第一天是否总是在第一周?如果是星期日呢?还是星期六?当然,您可以通过使用内置[星期](https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-tz/week.html)来计算出每个月有多少周将本月1日返回的周数与本月最后一天返回的周数进行比较。 – ale

+0

这听起来像是一个日期维度表的好例子,可以使这些计算更容易。无论您需要多长时间,您都可以设置每天的定义。然后,只需将您的数据加入维度表即可获得您需要的结果。由于它们非常有用,我认为所有的数据库都应该有一个日期维度表。 – Shawn

回答

0

您需要找到最低公分母,即2月。 2月有28天没有闰年。一个星期有7天,4 x 7 = 28,这意味着你不能提供一个功能,可靠地允许在每个月的第5周(或6,7,8等)安排。一种解决方法是,如果在该月的预定周内没有合乎逻辑的一天,则在该月的最后一天或下一天的第一天运行该任务。例如,在最后一天,您可以检查本月晚些时候安排的任何不能运行的任务,然后运行它们。