首页 > 解决方案 > ColdFusion UTC TIME LTE 检查与 NonUTC 时间

问题描述

我迷路了,我可以检查非 UTC 时间并且一切正常。但是当转换为 UTC 时间时,CFIF 不起作用

非 UTC {ts '2019-11-10 14:59:46'} LTE {ts '2019-11-10 14:00:00'}

UTC 如果 {ts '2019-11-10 21:59:46'} LTE {ts '2019-11-10 21:00:00'}

我迷路了......似乎无法弄清楚。

<cfset timenow = #Now()#>

<cfset utimenow = dateConvert("Local2UTC", timenow)>

<cfset admintime = #DateAdd("h", -1, chk.stime)#>
<cfset uadmintime = #DateAdd("h", -1, chk.utcact)#>

chk.stime 和 chk.utc 时间是正确的。基本上取消窗口需要一个小时的休息时间。

这些是创建的时间戳。

NON UTC {ts '2019-11-10 14:59:46'} LTE {ts '2019-11-10 14:00:00'}

NonUTC Stamps 是没有 UTC 转换的时间戳。

UTC if {ts '2019-11-10 21:59:46'} LTE {ts '2019-11-10 21:00:00'} 

非 UTC 邮票

<cfif timenow LTE admintime>
This one works fine...
 NON UTC {ts '2019-11-10 14:59:46'} LTE {ts '2019-11-10 14:00:00'}
 Then allow cancel
<cfelse>
This cfelse is activated properly and Can't Cancel.
 Can't Cancel
</cfif>

UTC Stamps
<cfif utimenow LTE uadmintime>
This one does not work
 UTC if {ts '2019-11-10 21:59:46'} LTE {ts '2019-11-10 21:00:00'}
 Then allow cancel
 This UTC Time does not activate properly and allows the cancel.
 Executes/Activates inside the cfif - it should not
 <cfelse>
 Can't Cancel
</cfif>

我也尝试转换以确保 ODBCTime

<cfset uadmintime = createODBCDateTime(uadmintime)>

我最终不得不重新创建时间,并比较那种格式。它现在适用于 the<cfif timenow LTE admintime>和 the DateCompare,如下所示。这一定是不喜欢格式的格式问题{ts '2019-11-10 14:59:46'} LTE {ts '2019-11-10 14:00:00'}

<cfset nctime = '#dateformat(uadmintime, "dd-MM-yyyy")# #timeformat(uadmintime, "hh:mm:ss")#'>
<cfset nutctime = '#dateformat(utimenow, "dd-MM-yyyy")# #timeformat(utimenow, "hh:mm:ss")#'>

标签: datetimecoldfusioncfmlcoldfusion-2016

解决方案


ColdFusion 是一种松散类型的语言,可以将日期/时间值保存在各种数据类型中。标准比较(如eq,lte等)根据未知和不断变化的规则比较不同类型的变量,因此如果 CF 决定转换为不同的数据类型,可能会产生意想不到的结果。有时您希望变量是日期/时间对象,而实际上它是一个通过日期验证的字符串。不同版本的 CF、Lucee 等可能会有不同的行为,或者也取决于所涉及的实际值。

我建议在比较日期时始终使用...dateCompare()

https://cfdocs.org/datecompare

<cfif utimenow LTE uadmintime>
    ...
</cfif>

变成

<cfif dateCompare(utimenow, uadmintime) lte 0>
    ...
</cfif>

示例代码:

https://cffiddle.org/app/file?filepath=e3d24147-8a25-44ff-a98d-5b1e686cd619/d6115113-eead-4214-bc94-13eb7f0456f5/efad9206-b082-4940-bf5d-f4c5001ae2ec.cfm


推荐阅读