TypeError: date.getHours is not a function in JavaScript

avatar

Borislav Hadzhiev

2 min

banner

Photo from Unsplash

# TypeError: date.getHours is not a function in JavaScript

The "TypeError: date.getHours is not a function" error occurs when the getHours() method is called on a value that is not a date object.

To solve the error, convert the value to a date before calling the method or make sure to only call the getHours() method on valid date objects.

typeerror date getHours is not a function

Here is an example of how the error occurs.

index.js
const date = Date.now(); console.log(date); // ๐Ÿ‘‰๏ธ 1639... // โ›”๏ธ TypeError: date.getHours is not a function const result = date.getHours();

We called the Date.now() function, which returns an integer, and tried to call the Date.getHours() method on it, which caused the error.

# Only call the getHours() method on valid Date objects

To solve the error, make sure to only call the getHours() method on valid date objects.

index.js
const t1 = new Date().getHours(); console.log(t1); // ๐Ÿ‘‰๏ธ 18 const t2 = new Date('Sept 24, 22 13:20:18').getHours(); console.log(t2); // ๐Ÿ‘‰๏ธ 13

You can get a date object by passing a valid date to the Date() constructor.

# Calling getHours() on an invalid Date returns NaN

Note that if an invalid date is passed to the Date() constructor, you would get NaN (not a number) value back.

index.js
const d1 = new Date('invalid').getHours(); console.log(d1); // ๐Ÿ‘‰๏ธ NaN

You can console.log the value you are calling the getHours method on and see if it's a valid Date object.

# Check if the value is a Date before calling getHours

You could conditionally check if the value is a Date object in the following way.

index.js
const d1 = new Date(); if (typeof d1 === 'object' && d1 !== null && 'getHours' in d1) { const result = d1.getHours(); console.log(result); // ๐Ÿ‘‰๏ธ 18 }

Our if condition uses the logical AND (&&) operator, so for the if block to run, all of the conditions have to be met.

We first check if the d1 variable stores a value with a type of object because dates have a type of object.

Then we check if the variable is not equal to null.

Unfortunately, if you check the type of null - console.log(typeof null), you will get an "object" value back, so we have to make sure the value is not null.

index.js
console.log(typeof null); // ๐Ÿ‘‰๏ธ object
The last thing we check for is that the object contains the getHours property.

Then we know we can safely call the getHours method on the object.

I wrote a book in which I share everything I know about how to become a better, more efficient programmer.
book cover
You can use the search field on my Home Page to filter through all of my articles.

Copyright ยฉ 2023 Borislav Hadzhiev