1

我需要确定一组日期是否包含两个不同的星期。

例如:

当从包含日期的数据库中返回一组记录时,需要有一些东西来区分不同的星期。

<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>
4

6 回答 6

1

我会 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 列进行分组,而无需执行所有愚蠢的条件逻辑。

于 2009-09-24T19:19:38.057 回答
0

这比我想象的要简单得多。我所要做的就是获得第一次约会的价值。所以,<cfif query.RecordCount EQ 1><cfset firstDate = Now() /></cfif>然后用 lastShiftDate 做一个 dateDiff()

感谢大家的帮助。

于 2009-10-06T16:12:51.553 回答
0

当 dateA 的 dayofweek 与 dateB 的 dayofweek 不同,并且它们的 DateDiff 大于 7 时?

那么 dateA 和 dateB 在不同的星期?

于 2009-09-24T18:28:06.493 回答
0

查看星期功能

于 2009-09-24T19:17:49.403 回答
0

您提供的代码有几个语法错误。如果您从源代码复制它,您可能会尝试关闭任何错误捕获,使您无法看到错误。

首先,解决语法:您的 cfif 未关闭。DateFormat() 接受两个参数——日期对象和日期掩码。如果这不在 cfoutput 块中,您将只显示文字#OrginalDate#。

解决逻辑:

我假设 OriginalDate 是查询返回中的一个字段。

我不确定您到底要做什么。只要两条记录之间的时间超过 6 天,您的代码就会打印一条水平线而不是日期。但是,只要日期更接近,您就永远不会打印水平线。因此,如果您曾经在数据库中有周一/周三/周五,您将永远不会得到 HR,因为 datediff 将是两三天,而不是七天。

有几种方法可以解决这个问题。如果您明确您的目的,我们也许可以更好地帮助您。例如,什么定义了新的一周?周六/周日午夜?从查询中的第一个日期开始?你想展示什么?

于 2009-09-24T18:48:41.190 回答
0

查看Week函数:根据日期/时间对象,确定一年中的周数。

于 2009-09-25T00:25:09.477 回答