2017-05-24 34 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等)安排。一種解決方法是,如果在該月的預定周內沒有合乎邏輯的一天,則在該月的最後一天或下一天的第一天運行該任務。例如,在最後一天,您可以檢查本月晚些時候安排的任何不能運行的任務,然後運行它們。