ColdFusion DateTimeFormat() Utility Function
Posted May 22, 2007 at 7:31 AM by Ben Nadel
I love ColdFusion's DateFormat() and TimeFormat() functions; they are hugely useful. And, most of the time, I use them independently of each other. But, often enough, I use DateFormat() followed by TimeFormat(). Wouldn't it be cool if ColdFusion had a DateTimeFormat() function that would accept both a date and a time mask? I think it would be, and here's what it might look like:
- <cffunction
- name="DateTimeFormat"
- access="public"
- returntype="string"
- output="false"
- hint="Formats the given date with both a date and time format mask.">
-
- <!--- Define arguments. --->
- <cfargument
- name="Date"
- type="date"
- required="true"
- hint="The date/time stamp that we are formatting."
- />
-
- <cfargument
- name="DateMask"
- type="string"
- required="false"
- default="dd-mmm-yyyy"
- hint="The mask used for the DateFormat() method call."
- />
-
- <cfargument
- name="TimeMask"
- type="string"
- required="false"
- default="h:mm TT"
- hint="The mask used for the TimeFormat() method call."
- />
-
- <cfargument
- name="Delimiter"
- type="string"
- required="false"
- default=" at "
- hint="This is the string that goes between the two formatted parts (date and time)."
- />
-
-
- <!---
- Return the date/time format by concatenating the date
- and time formatting separated by the given delimiter.
- --->
- <cfreturn (
- DateFormat(
- ARGUMENTS.Date,
- ARGUMENTS.DateMask
- ) &
-
- ARGUMENTS.Delimiter &
-
- TimeFormat(
- ARGUMENTS.Date,
- ARGUMENTS.TimeMask
- )
- ) />
- </cffunction>
Using the above ColdFusion user defined function, you could easily format date/time values:
- <!---
- DateTimeFormat called with all possible
- defaulted arguments.
- --->
- #DateTimeFormat(
- Now()
- )#
-
-
- <!---
- DateTimeFormat called with explicit date
- and time masks and default delimiter.
- --->
- #DateTimeFormat(
- Now(),
- "mmm d, yyyy",
- "h:mm TT"
- )#
-
-
- <!---
- DateTimeFormat called with explicit date and
- time masks as well as an explicit delimiter.
- --->
- #DateTimeFormat(
- Now(),
- "mmm d, yyyy",
- "h:mm TT",
- " at the time of "
- )#
The above code would give us the following output:
22-May-2007 at 7:24 AM
May 22, 2007 at 7:24 AM
May 22, 2007 at the time of 7:24 AM
I'm sure this has been done before, but I just really hope that one day Adobe adds it to the ColdFusion built-in function list.
Reader Comments
Yup, Ray did it back in 2001 and has it on his cflib.org site http://www.cflib.org/udf.cfm?ID=134
cflib.org hasn't got much press lately and it's easy to forget the wealth of udf's on the site.
@Chris,
It's funny, right after I posted this, I did a quick Google search to see if this was out there already (as I assumed it was) and there it was, CFLib as the second search result.
2001... I guess that means I'm only 6 years behind the Jedi :) The force is weak with me.
Heh, people _do_ forget about CFLib, so it is no big deal. ;) I need to get off my ass and release that new version that I've been talking about since 2004. ;)
Ben, good job anyway. If nothing else you made me aware of the existing function at cflib. Thanks!
@Ray,
Some of the best meals I have ever eaten were cooking over many many hours... that doesn't exactly translate to web sites, other than to say, good things are worth the wait.
@Ray,
Are you ever going to just integrate cflib into riaforge?
No plans. I really look at RIAForge as more for 'projects', not single CFCs/UDFs/tags. Now that is NOT official RIAForge policy. Shoot, even I have a single CFC up there I believe. But in GENERAL those are my thoughts. (Have to treat carefully here. I admin both sites, but Adobe is the official owner of RIAForge. Etc etc etc.)
Thanks a lot Ben this was really helpful.
Changed the Defaults to mm/dd/yyyy HH:mm:ss
It worked like a charm.
@Del,
Glad you are finding this useful.
Thanks for the function to format date and time together. However I found a similar method if you just want to display the date and time.
By doing this:
#dateformat(created_date, "dd-MMM-yyyy")# #timeformat(created_date, "h:mm:ss tt")#
Hope this helps out.
@Deepesh,
This function was actually meant to replace having to use two functions separately. But, of course, you should use which ever you prefer.



