Как я могу получить дату понедельника предыдущей недели и дату пятницы предыдущей недели?

Я использую ColdFusion 2016. Какой код нужен для получения предыдущего понедельника на предыдущей неделе и предыдущей пятницы на предыдущей неделе?

Этот код ниже получает предыдущий понедельник, но мне нужен предыдущий понедельник на предыдущей неделе. То же самое в пятницу.

<cfset currentDate = Now() /> 
<cfset mostRecentMonday = dayOfWeek(currentDate) gt 1 ? dateAdd("d", 2- 
 dayOfWeek(currentDate), currentDate) : dateAdd("d", -6, currentDate) />

person user1669296    schedule 06.08.2018    source источник
comment
Рекомендуется сначала проверить cflib.org. Обычно у него либо есть рабочая функция, либо что-то, что можно приспособить. Пример: PrevOccOfDOW(день). <cfset monday = prevOccOfDow(2)> и <cfset friday = prevOccOfDow(6)>.   -  person SOS    schedule 06.08.2018


Ответы (2)


Вам просто нужно упростить решение.

<cfset currentDate = Now() /> 
<cfset obj = {}>
<cfset todaydayOfWeek = dayOfWeek(currentDate)>
<cfset mondayOffset = (2-todaydayOfWeek)-7>
<cfset fridayOffset = (6-todaydayOfWeek)-7>
<cfset obj.mostRecentMonday = dateAdd("d", mondayOffset, currentDate)>
<cfset obj.mostRecentFriday = dateAdd("d", fridayOffset, currentDate)>
<cfdump var="#obj#">

ДЕМО

person rrk    schedule 06.08.2018

Вы можете получить в прошлую пятницу, как,

<cfset today=dayofweek(now())>
<span>Last Friday is:</span>
<cfif today eq 7>
    <span>#dateformat(dateAdd("d",-1,now()))#</span>
<cfelse>
    <span>#dateformat(dateAdd ("d",-(1+today),now()))#</span>
</cfif>

В прошлый понедельник :

<cfif today eq 7>
   <span>#dateformat(dateAdd("d",-5,now()))#</span>
<cfelse>
   <span>#dateformat(dateAdd ("d",-(5+today),now()))#</span><br>
</cfif>

@ user1669296, убедитесь, что ваш последний понедельник также возвращает неправильное значение. Например. Сегодня (06 сентября 2018 г.) понедельник, если вы запустите этот код, он вернет сегодняшнюю дату, а не последний понедельник. Так что исправьте и его.

person Kannan.P    schedule 06.08.2018