On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.

# Quick Note On IsDate() vs. IsNumericDate()

By on
Tags: ColdFusion

After my post yesterday on date math, someone sent me a question about IsDate() vs. IsNumericDate(). I briefly touch on the use of IsNumericDate() to determine if you have a numeric date, but I was not clear on exactly how it works. IsDate() takes a date/time object. IsNumericDate() takes a number. There are some caveats here. Since IsNumericDate() requires a number, if you send it a date/time object, ColdFusion will automatically convert the date/time object to a number, therefore allowing it to work. IsDate(), on the other hand, takes a date/time object and will NOT be true if passed a number, even if that number represents a date.

Take a look at this example:

• <!--- Get date/time object. --->
• <cfset dtNow = Now() />
•
• <!--- Get NUMERIC date value. --->
• <cfset flNow = (dtNow * 1) />
•
• <!--- Output the date and test methods. --->
• #DateFormat( dtNow )# - #IsDate( dtNow )# - #IsNumericDate( dtNow )#
•
• <!--- Output the numeric date and test methods. --->
• #DateFormat( flNow )# - #IsDate( flNow )# - #IsNumericDate( flNow )#

In that second line, just notice that I am multiplying the date by 1. This forces ColdFusion to convert the date/time object to a number. The code produces this output:

30-Aug-06 - YES - YES

30-Aug-06 - NO - YES

As you can see, a standard date/time object will return true for BOTH IsDate() and IsNumericDate(). A numeric date will return true for IsNumericDate(), but FALSE for IsDate(). Sorry if I was unclear about this before. As a safe guard, if you are working on a page where you might be working with numeric dates, I would recommend always using IsNumericDate() as it will give you the most useful responses.

Tweet This Groovy post by @BenNadel - Quick Note On IsDate() vs. IsNumericDate() Thanks my man — you rock the party that rocks the body!

### Looking For A New Job?

100% of job board revenue is donated to Kiva. Loans that change livesFind out more »

@Michael,

isDate() will work with a string - but, it won't work with a string that represents a number... is what I think they are saying. So, for example, this will return false:

isDate( "123" )

... but this will return true:

isDate( "jun 1, 2010" )

... both of which are strings. Of course, I might be misunderstanding what the docs are saying.

I'm running into a situation where isDate is returning true when being run against decimal numbers. Should 34.5 really equal 12/31/2013?

Oh my chickens, this post is old!