определить, наступит ли новая неделя в coldfusion

StackOverflow https://stackoverflow.com/questions/1473349

  •  16-09-2019
  •  | 
  •  

Вопрос

Мне нужно определить, содержит ли набор дат две разные недели.

Например:

При возврате набора записей из базы данных, содержащих дату, должно быть что-то, позволяющее различать разные недели.

<cfloop query="datesExample">

   <cfif DateDiff("d",DateFormat(lastDate),DateFormat(OriginalDate)) GTE 7>
       <hr />
   </cfif>
   <p>#OrginalDate#</p>

   <cfset lastDate = DateFormat(OrginalDate) />
</cfloop>

На мой взгляд, это вся логика, которую мне нужно добавить, чтобы определить, наступит ли новая неделя.

Хотя никаких результатов от этого я не получаю.

У кого-нибудь есть идеи?

Обновлять:

Это мой фактический оператор if:

<cfif DayofWeek(lastShiftDate) NEQ DayOfWeek(Time_In) AND DateDiff("d",lastShiftDate, Time_In) GTE 7>
Это было полезно?

Решение 6

Это было гораздо проще, чем я думал.Все, что мне нужно было сделать, это получить значение первого свидания.Так, <cfif query.RecordCount EQ 1><cfset firstDate = Now() /></cfif> а затем выполните dateDiff() с помощью LastShiftDate

Спасибо всем за помощь.

Другие советы

Я бы использовал QueryAddColumn, чтобы добавить дополнительный столбец в конец вашего запроса, затем выполнить цикл и установить начало недели для каждой записи в запросе.Что-то вроде этого:

<cfset datesExample = QueryNew("lastshiftdate", "date") />
<cfset QueryAddRow(datesExample) />
<cfset QuerySetCell(datesExample, "lastshiftdate", "2009-01-15") />
<cfset QueryAddRow(datesExample) />
<cfset QuerySetCell(datesExample, "lastshiftdate", "2009-01-20") />
<cfset QueryAddColumn(datesExample, "StartofWeek", "time", ArrayNew(1)) />
<cfloop query="datesExample">
    <cfset QuerySetCell(datesExample, "StartofWeek", DateAdd("d", -(DayOfWeek(lastshiftdate) - 1), lastshiftdate), CurrentRow) />
</cfloop>

<cfdump var="#datesExample#">

Затем, когда вы используете cfoutput, вы можете просто сгруппировать по столбцу StartofWeek, не выполняя всей глупой условной логики.

Дэн

когда день недели dateA отличается от дня недели dateB, а их DateDiff больше 7?

Тогда dateA и dateB находятся на разных неделях?

Представленный вами код содержит несколько синтаксических ошибок.Если вы скопировали его из источника, вы можете попробовать отключить перехват ошибок, который не позволяет вам видеть ошибки.

Во-первых, обратимся к синтаксису:Ваш cfif не закрыт.DateFormat() принимает два аргумента — объект даты и маску даты.Если этого нет в блоке cfoutput, вы просто отобразите буквальную #OrginalDate#.

Чтобы разобраться с логикой:

Я предполагаю, что OriginalDate — это поле в возвращаемом запросе.

Я не совсем уверен, что вы пытаетесь сделать.Ваш код печатал бы горизонтальную линию вместо даты каждый раз, когда между двумя записями было более 6 дней.Однако вы никогда не напечатаете горизонтальную линию, если даты расположены ближе друг к другу.Итак, если бы в базе данных были понедельник/среда/пятница, вы бы никогда не получили HR, потому что дата будет равна двум или трем дням, а не семи.

Существует несколько подходов к решению этой проблемы.Если вы уточните свою цель, возможно, мы сможем помочь вам лучше.Например, что определяет новую неделю?Сб/Вс в полночь?С первой даты в запросе?Что вы пытаетесь отобразить?

Проверьте Неделя функция:Из объекта даты/времени определяет номер недели в году.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top