[Looking for Charlie's main web site?]

Hotfix released for CF2021 date-mask compatibility issue

Good news to share: if you're concerned about being impacted by a pressing compatibility issue in ColdFusion 2021 (regarding using "D" in a dateformat mask), Adobe released a fix for the problem last week. There are 3 simple steps to implementing that hotfix.

For more on the problem, see see my recent post on the issue. For more on the fix, see that Adobe technote or read on for some additional details.

Background

Two weeks ago, I shared that other blog post reporting a problem discovered with CF2021, where a new Dateformat mask of D had been added, for "day of year" (for the dateformat and lsdateformat functions, perhaps among others.)

That would be fine, except that CF had traditionally not paid attention to the case of datemask values. So with this change, existing code that might refer, for example, to a dateformat mask of "MM-DD-YYYY" would produce today a date of "12-342-2020". With the fix implemented, the mask would produce instead a date (today) of 12-07-2020.

Of course, another way to get the "correct" date would be to change the dateformat mask to use a lowercase d, as in "mm-dd-yyyy".

Implementing the hotfix

There are three relatively simple steps to cause this new/corrected behavior, as documented in the aforementioned Adobe technote:

  1. Download the hotfix jar. (This step and the next one will likely not be needed once the first formal CF2021 "update" comes out. Indeed, this link may fail to work soon after that first formal CF2021 update, in which case just skip here to step 3.)
  2. Place this jar file into the cfusion/lib/updates folder within CF2021.
  3. Add the following JVM argument to CF's jvm arguments:
    -Dcoldfusion.datemask.useDasdayofmonth=true
    whether by editing those in the CF Admin "Java & JVM" page, or edit the jvm.config, found in the cfusion/bin folder within CF2021. (The latter option is safer, as you can more easily save a backup of the file and revert it, if you make any mistake.)

If you have created another instance, using the Instance Manager feature in the CF Admin in the Enterprise, Trial, or Developer edition, you would need to repeat those steps for that instance, with regard to its own folder as a sibling to cfusion, as well as its own CF Admin.

Finally, I mentioned above that the jar will not likely need to be updated once the first real "update" to CF2021 comes out. Similarly, it's likely that the update would also remove that jar file, so you need not to bother. I discuss this matter of applying such "special hotfixes" in this blog post.

What if I DO want to use "D" for "day of year"

Of course, if you ever DO want to use D as "day of year", you'd want to either remove that JVM argument or set its value to "false".

Just know then that you must then be sure to find and correct any references to "D" in dateformat masks which you really mean to mean to return "day of month".

Conclusion

Great to see Adobe respond to this issue so quickly.

And while we can lament that they didn't anticipate this issue previously, see my first post for a couple of points to keep in mind in that regard: first, the "D" value is a long-valid Java date mask for "day of year" (which CF was only finally implementing), and second, Lucee has the same "problem" of currently ignoring the case of dateformat masks (so that they'd have the same issue if they ever tried to implement this "D" mask value.

For more content like this from Charlie Arehart: Need more help with problems?
  • If you may prefer direct help, rather than digging around here/elsewhere or via comments, he can help via his online consulting services
  • See that page for more on how he can help a) over the web, safely and securely, b) usually very quickly, c) teaching you along the way, and d) with satisfaction guaranteed
Comments
Hi Charlie. I went the former route by applying the jvm argument update in the Administrator itself (rather than within the jvm.config file). If I'm looking at things correctly in the file system, CF Admin made a backup of (jvm.bak) upon applying this config change in the admin. Can you confirm?
# Posted By Andy Peterson | 12/8/20 8:24 AM
Andy, yes, the cf admin always makes backup of the file as well, but my point in suggesting the alternative of editing and backing up the file was that:

a) a typical user of the cf admin would not readily know what and where these files are

b) so if they made a mistake that would keep cf from coming up, they'd not be able get to the admin to see/revert their mistake

c) also, the backup the admin makes is one that gets overridden by a subsequent update. By making their own backup, one would likely choose a different name that would not get lost by that automated backup

Still, I appreciate your checking in for more clarity. Hope that's helpful.
# Posted By Charlie Arehart | 12/8/20 8:32 AM
Copyright ©2021 Charlie Arehart
Carehart Logo
BlogCFC was created by Raymond Camden. This blog is running version 5.005.
(Want to validate the html in this page?)

Managed Hosting Services provided by
Managed Dedicated Hosting