loops - ColdFusion 在同一代码中循环到看似不同的时间

标签 loops time coldfusion

考虑以下循环:

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

相关文章:

java - 杀死一个在 Java 中使用标志的线程

string - 如何设置 Do...While... 循环 (VBA) 的延续?

ruby - 为什么在 ruby​​ 救援 block 中调用的函数无法修改变量?

php - 问题发现两次之间的差异。 (PHP/MySQL)

c - 使用 GNU clock() 处理处理器计时溢出

coldfusion - 执行锁定步骤后无法更新 ColdFusion

javascript - 更改循环内的函数名称

java - 从数字字符串更改为日期字符串?

asp.net - C# 部分类的 ColdFusion CFC 实现?

arrays - cfloop 一个数组并逐行读取内容