考虑以下循环:
<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
to:8:00 PM
该代码从上午 9:00 到晚上 7:30 每 30 分钟增量输出一次。
当我的输入来自:10:00 AM
to:1:00 PM
该代码从上午 10:00 到下午 1:00 每 30 分钟增量输出一次。
谁能解释一下发生了什么以及为什么第一个循环中缺少一个 30 分钟的片段,而第二个循环中却没有?有人告诉我这是一种有效的循环时间方法,但我开始认为,因为时间在底层 Java 方法中呈现为浮点数,所以发生了一些舍入并且搞砸了。
编辑:我真的认为我不传递日期/时间对象并不重要。 CF正在幕后进行铸造,否则整个事情根本无法进行。
这是因为在幕后,CF 所做的就是将日期转换为双精度(或者在您的情况下:将字符串转换为日期转换为双精度),而晚上 8 点(1 天的 20/24)将产生舍入误差,从而导致它在预期的上限之内;而下午 1 点(1 天的 13/24)稍微超出了预期的上限。
当循环需要日期时传递字符串可能没有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)