Copy link to clipboard
Copied
A funny thing happend last night. A loop over the hours hit 2:00 and failed a createDateTime. So I added guard programming to test validity using isDate(), to skip the items in spring forward DST are not there (2:00 hour). It still failed. Apparently isDate is build on top of createdateTime, but instead of capturing it internally and returning false as it should, it throws an exception. This does not seem like the correct behavior for isDate().
Sample code:
<cfset response = isDate("3/13/2022 02:00:00")>
coldfusion.util.DateUtils$InvalidDateException: Date value passed to date function createDateTime is unspecified or invalid.
at coldfusion.util.DateUtils.createDateTime(DateUtils.java:1503)
at coldfusion.runtime.CFDateTimeParser.toDateTime(CFDateTimeParser.java:592)
at coldfusion.runtime.CFDateTimeParser.parseTime(CFDateTimeParser.java:356)
at coldfusion.runtime.CFDateTimeParser.parseTime(CFDateTimeParser.java:316)
at coldfusion.runtime.CFDateTimeParser._parseDateTime(CFDateTimeParser.java:160)
at coldfusion.runtime.CFDateTimeParser.parseDateTime(CFDateTimeParser.java:88)
at coldfusion.util.DateUtils._parseDateTime(DateUtils.java:1050)
at coldfusion.util.DateUtils.isDate(DateUtils.java:1032)
at coldfusion.runtime.CFPage.IsDate(CFPage.java:3676)
at cfgctest2ecfm1330162049.runPage(C:\ColdFusion2021\cfusion\wwwroot\testDate.cfm:1)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:257)
at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:749)
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:578)
at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:605)
at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:43)
at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
at coldfusion.filter.PathFilter.invoke(PathFilter.java:162)
at coldfusion.filter.IpFilter.invoke(IpFilter.java:45)
at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30)
at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:97)
at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:81)
at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:60)
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
at coldfusion.CfmServlet.service(CfmServlet.java:232)
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:311)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:46)
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:47)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at coldfusion.inspect.weinre.MobileDeviceDomInspectionFilter.doFilter(MobileDeviceDomInspectionFilter.java:57)
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:47)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
Copy link to clipboard
Copied
Greg, it seems this is more a statement/observation by you rather than a question, and fair enough. Perhaps someone, including Adobe, may chime in with thoughts or some workaround.
But I'd think it would be good if you filed this as a bug report, at tracker.adobe.com. If you do, please do share the ID number or link here, and you may want to link that to this forum post.
Also, it could help if you'd indicate also (here and there) what cf version and update level (as well as Java level) you're running, all reported on the cf admin settings summary page. If you're not on the latest update of your cf version or jvm, this could be a bug in one of those, since fixed.
Hope that helps.
Copy link to clipboard
Copied
Just added this bug:
https://tracker.adobe.com/#/view/CF-4212875
Copy link to clipboard
Copied
Joseph, since you're not Greg (but opened the ticket today and reported it here), can you clarify: do you work with him? Or are you getting the same error?
And you did not indicate there what Java version you're using. Again, that may be important. I see you reported being on 2021 update 3.
Again, Greg, hope you will clarify your cf and Java versions.
Copy link to clipboard
Copied
Hi Charlie,
I am getting the same error and ain't working with Greg. I just added additional comment explaining my Java version. Thanks.
Copy link to clipboard
Copied
@joseph.yan , three comments:
<cfscript>
writeoutput(isDate(createdatetime(2022,03,13,2,0,0)));
</cfscript> ​
<cfscript>
writeoutput(createdatetime(2022,03,13,2,0,0));
</cfscript>.
That is, it works without any error.Copy link to clipboard
Copied
Thank you all for your reponse.
Bug report has been submitted: https://tracker.adobe.com/#/view/CF-4212878
My development environment is:
Window 10 64-bit system
ColdFusion 2021 2021,0,0,323925 Adobe Driver 5.1.4 (Build 0001)
Java is 11.0.1
Also I forgot to mention that I am in the US, and so experienced Daylight Saving time change on 3/13/2022. My european colleagues will obviously not go through time change for their systems for another couple of weeks. Daylight Saving Time rules vary throughout the world.
Note: My issue is NOT with createDateTime, which is perfectly correct to throw an exception for invalid input in my timezone. My issue is with isDate, which should return a simple true or false.
Copy link to clipboard
Copied
Note: My issue is NOT with createDateTime, which is perfectly correct to throw an exception for invalid input in my timezone. My issue is with isDate, which should return a simple true or false.
By @Greg Campbell
That is the point exactly! 🙂
Your template calls the function isDate().
Whereas ColdFusion throws an exception about its own internal function, createDateTime().
That is in itself buggy behaviour.
In fact, I have added the following comment to a similar bug ticket I opened some days ago (https://tracker.adobe.com/#/view/CF-4212860):
The following amounts to a bug anyway:
1) You use the function isDate() in your CFM template.
2) ColdFusion gives you the following error message:
" Detail: Specify a valid date in createDateTime function.
Message: Date value passed to date function createDateTime is unspecified or invalid. StackTrace: coldfusion.util.DateUtils$InvalidDateException: Date value passed to date function createDateTime is unspecified or invalid. at coldfusion.util.DateUtils.createDateTime(DateUtils.java:1504) at coldfusion.runtime.CFDateTimeParser.toDateTime(CFDateTimeParser.java:592) at coldfusion.runtime.CFDateTimeParser.parseTime(CFDateTimeParser.java:392) at coldfusion.runtime.CFDateTimeParser._parseDateTime(CFDateTimeParser.java:165)
etc."
This bug goes as far back as 2009.
See https://community.adobe.com/t5/coldfusion-discussions/error-in-createdatetime/td-p/828339
Copy link to clipboard
Copied
<cfset response = isDate("3/13/2022 02:00:00")>
Date value passed to date function createDateTime is unspecified or invalid.
coldfusion.util.DateUtils$InvalidDateException: Date value passed to date function createDateTime is unspecified or invalid.
at coldfusion.util.DateUtils.createDateTime(DateUtils.java:1503)
at coldfusion.runtime.CFDateTimeParser.toDateTime(CFDateTimeParser.java:592)
at coldfusion.runtime.CFDateTimeParser.parseTime(CFDateTimeParser.java:356)
at coldfusion.runtime.CFDateTimeParser.parseTime(CFDateTimeParser.java:316)
at coldfusion.runtime.CFDateTimeParser._parseDateTime(CFDateTimeParser.java:160)
at coldfusion.runtime.CFDateTimeParser.parseDateTime(CFDateTimeParser.java:88)
at coldfusion.util.DateUtils._parseDateTime(DateUtils.java:1050)
at coldfusion.util.DateUtils.isDate(DateUtils.java:1032)
at coldfusion.runtime.CFPage.IsDate(CFPage.java:3676)
at cfgctest2ecfm1330162049.runPage(C:\ColdFusion2021\cfusion\wwwroot\testDate.cfm:1)...
By @Greg Campbell
This is in any case a bug. The reason being that ColdFusion's underpants are showing. ColdFusion is reporting an exception (coldfusion.util.DateUtils$InvalidDateException) that is being thrown at one of its own internal functions (createDateTime).
Copy link to clipboard
Copied
@Greg Campbell and @joseph.yan ,
Does the following help as a workaround?