首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在约会时使用openbd cfloop

在约会时使用openbd cfloop
EN

Stack Overflow用户
提问于 2008-11-04 18:54:15
回答 3查看 605关注 0票数 0

我正在尝试将我的网站从CF8转换为openBD。我在一个站点中有一个循环遍历日期范围的cfloop。

实际上,我希望在一个日期范围(从和到)中每两周(步骤)向数据库中插入一条新记录。

我的循环看起来像这样。

代码语言:javascript
复制
<cfloop 
  from  = "#form.startDate#" 
  to    = "#form.endDate#" 
  index = "i" 
  step  = "#theStep#"
>

这在CF8中工作得很好,在openBD中,我得到这个错误...不支持数据:值11/05/09不是数字

有什么工作的想法吗?

Thx

EN

回答 3

Stack Overflow用户

发布于 2008-11-05 21:47:48

您的问题在于没有从表单中检查不明确的依赖于区域设置的日期字符串。

一个更健壮的版本应该是:

代码语言:javascript
复制
<cfset SetLocale("English (US)")> <!--- set expected input locale here --->

<cfif LSIsDate(form.startDate) and LSIsDate(form.endDate)>
  <cfset theStep = 14>

  <cfloop 
    from  = "#LSParseDate(form.startDate)#" 
    to    = "#LSParseDate(form.endDate)#" 
    index = "i" 
    step  = "#theStep#"
  >
    <!--- do stuff --->
  </cfloop>
<cfelse>
  <!--- output some error message --->
</cfif>

限制用户在表单中输入明确的日期格式会很有帮助,比如"yyyy-mm-dd“。

"value is not a number“错误来自这样一个事实:即使您向循环提供日期,它仍然会遍历数字。它使用这些日期的数字表示,但它们必须是有效的和可理解的,才能工作。

票数 1
EN

Stack Overflow用户

发布于 2008-11-04 20:07:22

我看不到你的代码,但这是我的第一个建议:

代码语言:javascript
复制
<cfset current = [your begin date]>
<cfloop condition = "datecompare(enddate, current)">
  [do stuff]
  <cfset current = dateadd('d', 14, current)>
</cfloop>

HTH。

票数 0
EN

Stack Overflow用户

发布于 2008-11-04 23:03:13

正如Ben所说,您的代码不在那里-您需要使用101010图标为其创建一个代码块。

这里有另一个解决方案,它应该是有效的:

代码语言:javascript
复制
<cfloop index="Current" from="#parseDateTime(StartDate)#" to="#parseDateTime(EndDate)#" step="14">
    [do stuff]
</cfloop>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/262940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档