Hi JD,
Whenever you want to compare date or time elements, then make sure you are not comparing strings, but instead are comparing number or date objects.
Your current code does a string comparison "06:45 PM" lt "07:50 AM", which indeed is true. Lucee is correct.
The reason ACF did return a False value, is a weird feature on their part. What ACF does before comparing a string, is checking if it can parse the strings as a date/datetime. If it can parse them as dates, then it will do so before comparison.
The user never asked for that, it's weird, but that's the reason you are seeing differences. Lucee is cool, ACF the weird one.
If your timeFormat method had a different output, which cannot be converted back to a date/time object, ACF would have said True as well:
<cfif timeformat(arguments.testTime,"hhXXXXXmm tt") lt timeformat(arguments.currentTime,"hhXXXXXmm tt")>
The easiest thing would have been, to first convert the time objects, like so:
<cfset testTime = parseDateTime("6:45 PM")>
<cfset currentTime = parseDateTime("7:50 AM")>
<cfreturn testTime lt currentTime />
Just for the fun of it, I did some tests at
cflive.net between ACF and Lucee: (code is underneath)
Coldfusion:
(2000-01-01) lt (01/01/2020) = YES
(2000-01) lt (01/01/2020) = YES
(2000) lt (01/01/2020) = YES
(200) lt (01/01/20) = YES
(200) lt (01/) = NO
(20) lt (01) = NO
(01-12-2030) lt (12/02/2000) = NO
(01-12) lt (12/02) = YES
(01-12-2) lt (12/02/2) = YES
(01-12-203) lt (12/02/200) = NO
Lucee:
string | (2000-01-01) lt (01/01/2020) = false |
string | (2000-01) lt (01/01/2020) = false |
string | (2000) lt (01/01/2020) = false |
string | (200) lt (01/01/20) = false |
string | (200) lt (01/) = false |
string | (20) lt (01) = false |
string | (01-12-2030) lt (12/02/2000) = true |
string | (01-12) lt (12/02) = true |
string | (01-12-2) lt (12/02/2) = true |
string | (01-12-203) lt (12/02/200) = true |
<cfset d1 = "2000-01-01" />
<cfset d2 = "01/01/2020" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
<cfset d1 = "2000-01" />
<cfset d2 = "01/01/2020" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
<cfset d1 = "2000" />
<cfset d2 = "01/01/2020" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
<cfset d1 = "200" />
<cfset d2 = "01/01/20" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
<cfset d1 = "200" />
<cfset d2 = "01/" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
<cfset d1 = "20" />
<cfset d2 = "01" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
<cfset d1 = "01-12-2030" />
<cfset d2 = "12/02/2000" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
<cfset d1 = "01-12" />
<cfset d2 = "12/02" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
<cfset d1 = "01-12-2" />
<cfset d2 = "12/02/2" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
<cfset d1 = "01-12-203" />
<cfset d2 = "12/02/200" />
<cfdump var="(#d1#) lt (#d2#) = #d1 lt d2#" /><hr>
Kind regards,
Paul Klinkenberg