如何找到最近的周一?

Evi*_*mes 1 php java coldfusion

我正在使用ColdFusion 9.0.1.

我正在每个星期一午夜创建比赛.我需要使用ColdFusion(但我相信其他语言的逻辑是相同的)来查找最近一个星期一的日期.确定该日期后,我会将该日期删除到SQL语句中以获取当前的排名和过去的结果.

那么,我需要哪些功能才能找到最近的星期一?

回答

Dates = structNew();
Dates.CurrentDay = dateFormat(now(), "yyyy-mm-dd");
// LOOP MAX OF SEVEN TIMES
for (i = 1; i lte 7; i++) {
    // IF CURRENT DAY OF WEEK IS MONDAY SET AND BREAK
    if (dayOfWeek(Dates.CurrentDay) == 2) {
        Dates.BikeOfTheWeekDate = Dates.CurrentDay;
        break; 
    // IF CURRENT DAY OF WEEK IS NOT MONDAY SUBTRACT DAY
    } else {
        Dates.CurrentDay = dateAdd("d", -1, Dates.CurrentDay);
    }
}
Run Code Online (Sandbox Code Playgroud)

Lei*_*igh 10

您也可以从2(即星期一)扣除当周的当天

<!--- All days except Sunday (ie 2-Monday,...,7-Saturday) --->
<cfif dayOfWeek(currentDate) gt 1>
    <cfset mostRecentMonday = dateAdd("d", 2-dayOfWeek(currentDate), currentDate)>
<cfelse>
    <cfset mostRecentMonday = dateAdd("d", -6, currentDate)>
</cfif>
Run Code Online (Sandbox Code Playgroud)

  • `&lt;cfset mostRecentMonday = dayOfWeek(currentDate) gt 1 ?dateAdd("d", 2-dayOfWeek(currentDate), currentDate) : dateAdd("d", -6, currentDate) /&gt;` (3认同)

ᆼᆺᆼ*_*ᆼᆺᆼ 6

伪代码:

Get the current day
Loop
    Check if it's Monday
        If yes, break out of the loop
    Substract one
Next loop
Run Code Online (Sandbox Code Playgroud)

在ColdFusion中,减去一天DateAdd("d", -1, date)并检查星期一,DayOfWeek(date)其中星期一返回2.