Detecting an “invalid date” (v3)

Revision 3 of this benchmark created by Tim Stone on


Description

I'd like to be able to tell if a given input is a valid Date input, in the best possible performance.

Setup

var valid = new Date();
    var invalid = new Date('invalid');

Test runner

Ready to run.

Testing in
TestOps/sec
timestamp isNaN
!isNaN(valid.getTime());
!isNaN(invalid.getTime());
ready
isFinite
isFinite(valid);
isFinite(invalid);
ready
comparison
// An invalid date object returns NaN for getTime() and NaN is the only
// object not strictly equal to itself.
valid.getTime() === valid.getTime();
invalid.getTime() === invalid.getTime()
ready
comparison 2
// An invalid date object returns NaN for getTime() and NaN is the only
// object not strictly equal to itself.
var validTime = valid.getTime();
validTime === validTime;
var invalidTime = invalid.getTime();
invalidTime === invalidTime;
ready
isNaN implicit conversion
!isNaN(valid);
!isNaN(invalid);
ready
toString
valid.toString() === 'Invalid Date'
invalid.toString() === 'Invalid Date'
ready
Implicit type conversion
valid == 'Invalid Date'
invalid == 'Invalid Date'
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.