I was prepping some tests for the awesome Lucee Spreadsheet library and came across an issue when one of my ID strings 9A
was autocast as a time 09:00:00
. I wasn't expecting this to happen as it didn't seem like a valid date/time string to me. I thought this could be easily fixed by adding a space 9 A
and it was still converted to a time. How about multiple spaces 9 A
... nope, it's still a valid time string?
Has anyone reviewed what valid and invalid strings the TimeFormat() tag can accept? I get different results when using Adobe ColdFusion versus Lucee... and that's a problem IMHO, but is it a bug or feature?
Adobe ColdFusion 2016 / 2018 Results:
"9" = NO "00:00:00.000"
"9A" = YES "09:00:00.000"
"9p" = YES "21:00:00.000"
"9#Chr(32)##Chr(32)##Chr(32)#A " = YES "09:00:00.000"
" 9 A " = YES "09:00:00.000"
"23" = NO "00:00:00.000"
"15.4" = YES "09:36:00.000"
Lucee 5 Results:
"9" = false "00:00:00.000"
"9A" = false "ERROR"
"9p" = false "ERROR"
"9#Chr(32)##Chr(32)##Chr(32)#A " = false "ERROR"
" 9 A " = false "ERROR"
"23" = false "00:00:00.000"
"15.4" = true "00:00:00.000"
Source Code
<!--- 20200827 Adobe ColdFusion TimeFormat Bug? | |
When dumping data to Excel, some strings are incorrectly autocast as date/time values. | |
Blog: https://dev.to/gamesover/coldfusion-timeformat-conversion-testing-3m81 | |
TryCF Lucee: https://www.trycf.com/gist/923f645b3944b7315c22ac693c17e94b/lucee5 | |
TryCF ACF2016: https://www.trycf.com/gist/923f645b3944b7315c22ac693c17e94b/acf2016 | |
TryCF ACF2018: https://www.trycf.com/gist/923f645b3944b7315c22ac693c17e94b/acf2018 | |
---> | |
<cfset tests = ["9", "9A", "9p", "9#CHR(32)##CHR(32)##CHR(32)#A ", " 9 A ", "23", "15.4"]> | |
<cfoutput> | |
<cfloop array="#Tests#" index="thisTest"> | |
<div>"#thisTest#" = #isValid("time", thisTest)# | |
<cftry> | |
"#TimeFormat(thisTest, 'HH:mm:ss.lll')#" | |
<cfcatch>ERROR"</cfcatch> | |
</cftry> | |
</div> | |
</cfloop> | |
</cfoutput> |
Top comments (0)