常温核融合の新しい週かどうかを判断する
-
16-09-2019 - |
質問
一連の日付に 2 つの異なる週が含まれているかどうかを確認する必要があります。
例えば:
日付を含む一連のレコードをデータベースから返す場合、異なる週を区別する何かが必要です。
<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>
次に、lastShiftDate を使用して dateDiff() を実行します。
皆さんのご協力に感謝します。
他のヒント
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 より大きい場合は?
では、日付Aと日付Bは別の週にあるのでしょうか?
提示されたコードにはいくつかの構文エラーがあります。ソースからコピーした場合は、エラーが表示されないようにするエラー トラップを無効にしてみてください。
まず、構文を説明します。cff が閉じられていません。DateFormat() は、日付オブジェクトと日付マスクという 2 つの引数を取ります。これが cfoutput ブロック内にない場合は、リテラルの #OrginalDate# を表示するだけです。
ロジックに対処するには:
OriginalDate がクエリの戻り値のフィールドであると仮定しています。
あなたが何をしようとしているのか正確にはわかりません。このコードでは、2 つのレコードの間に 6 日以上の間隔がある場合、日付の代わりに水平線が出力されます。ただし、日付が近い限り、水平線が印刷されることはありません。したがって、データベースに月/水/金曜日があった場合、日付差分は 2 日か 3 日になり、7 日になることはないため、HR を取得することはできません。
これに対処するにはいくつかのアプローチがあります。目的を明確にしていただければ、より適切なサポートができるかもしれません。たとえば、新しい週を定義するものは何でしょうか?土曜/日曜の深夜?クエリの最初の日付以降?何を表示しようとしているのですか?
をチェックしてください 曜日機能
をチェックしてください 週 関数:日付/時刻オブジェクトから、その年の内の週番号を決定します。