考虑以下循环:
<cfloop from="#timeFormat(roomAvail.startTime,'short')#" to="#timeFormat(roomAvail.endTime,'short')#" step="#CreateTimeSpan(0,0,30,0)#" index="time">
<cfoutput>
#timeFormat(time,'short')#<br/>
</cfoutput>
</cfloop>
当我的输入是从:9:00 AM
到:8:00 PM
代码从 9:00 AM 到 7:30 PM 每 30 分钟增量输出一次.
当我的输入是从:10:00 AM
到:1:00 PM
代码从 10:00 AM 到 1:00 PM 每 30 分钟增量输出一次.
谁能解释发生了什么以及为什么第一个循环中缺少一个 30 分钟的片段而不是第二个循环?有人告诉我这是一种有效的时间循环方法,但我开始认为,因为时间在底层 Java 方法中呈现为 float ,所以发生了一些舍入,结果搞砸了。
编辑:我真的认为我不传递日期/时间对象并不重要。 CF 正在幕后转换,否则整个事情根本无法进行。
最佳答案
这是因为在幕后,所有 CF 所做的就是将日期转换为 double (或者在您的情况下:将字符串转换为日期再转换为 double ),晚上 8 点(1 天的 20/24)将进行舍入将其留在预期的上限范围内的错误;而下午 1 点(1 天的 13/24)稍微超出了预期的上限。
当循环需要日期时传递字符串可能无济于事。
关于loops - ColdFusion 在同一代码中循环到看似不同的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29214024/