如何获取数组中列出的所有日期?

时间:2016-01-21 20:08:17

标签: javascript arrays date coldfusion

我正在尝试输出从开始到结束日期的所有日期到数组。一旦我得到数组中的所有日期,我就创建了一个循环数组并添加className的函数。这是我创建数组的代码:

<cfoutput query="qryOne">
    <cfloop from="#PickDateTime#" to="#DropDateTime#" index="i" step="#CreateTimeSpan(1,0,0,0)#">
        dateArray[#currentrow#] = new Array("#UserID#","#dateformat(i,'mmddyyyy')#");
    </cfloop>
</cfoutput>

这是我的JavaScript函数:

var dateArray = new Array();

function getDate(){
    for (var i=1; i < dateArray.length; i++){
        result = document.getElementById(dateArray[i][1])
        result.className = 'booked'
    }
}

此时我遇到的问题是代码只给出了结束日期。有时我有 在同一天发生的开始和结束时间,但有时我们也可以有日期范围。这里有几个例子:

Start           End
01/21/2015    01/21/2015
08:00 AM      12:30 PM
01/23/2015    01/24/2015
09:00 AM      03:00 PM
01/31/2015    02/05/2015
11:00 AM      10:00 AM

所以我现在的代码只给出了结束日期,我需要得到所有日期。如果有人在上面的代码中看到我做错了,请告诉我。感谢。

1 个答案:

答案 0 :(得分:1)

Alexcharlietfl所示,您的数组创建逻辑似乎是错误的。我假设您正在尝试存储每个用户的日期范围。在这种情况下,您应该使用结构来存储每个用户的日期数组,而不是数组。

除此之外,我建议首先创建日期数组的ColdFusion结构,然后使用ColdFusion SerializeJSON()函数将其序列化为JSON。 像这样:

<cfset dateStruct = structNew() />
<cfoutput query="qryOne">
    <cfset dateStruct[userID] = arrayNew(1) />
    <cfloop from="#PickDateTime#" to="#DropDateTime#" index="i" step="#CreateTimeSpan(1,0,0,0)#">
        <cfset arrayAppend(dateStruct[userID],"#dateformat(i,'mmddyyyy')#")/>
    </cfloop>
</cfoutput>

然后您可以使用以下函数将结构以JSON格式保存在JavaScript变量中:

<script>
     var jsonString =  '<cfoutput>#SerializeJSON(dateStruct)#</cfoutput>';
     var JSONObject = JSON.parse(jsonString);
</script>

在JavaScript中拥有JSON对象后,您可以使用它来执行任何操作。 如果你想循环遍历JSON对象,请阅读: iterating through json object javascript