[Solved] TypeError: toLocaleDateString is not a function

Total
0
Shares

If we call the toLocaleDateString() method on the value that is not of a Date object, JavaScript will throw a TypeError: toLocaleDateString is not a function.

In this tutorial, we will look at what is TypeErrror: toLocaleDateString is not a function error and how to resolve them with examples.

What is TypeError: toLocaleDateString is not a function error?

Let us take a simple example to demonstrate this issue

// Declare and store the data into a variable
const currDate = Date.now();

// Prints the UNIX epoch
console.log(currDate);

// Convert Date into a string with a language sensitive representation of the date.
const output = currDate.toLocaleDateString('en-US');

Output

1655113057893
TypeError: currDate.toLocaleDateString is not a function

In the above example, we have declared a variable and we have stored the UNIX epoch timestamp as the integer value into it. The Date.now() method returns the UNIX timestamp which is of type number.

In the next statement, we call the Date.prototype.toLocaleDateString() method on the value of the type number, and hence we get a TypeError: toLocaleDateString is not a function.

We can also check the variable type using typeof() to confirm the datatype.

// Declare and store the data into a variable
const currDate = Date.now();

// Prints the UNIX epoch
console.log(currDate);

console.log("The type of variable is",typeof currDate)

Output

1655113670272
The type of variable is number

How to fix TypeError: toLocaleDateString is not a function error?

The Date.prototype.toLocaleDateString() method can only be used on the Date object and not on any other object type. 

There are two ways to fix this issue in JavaScript.

Solution 1: Convert the value into a Date Object

We can easily resolve the issue by converting the value into a Date object before calling the toLocaleDateString() method.

If we know the value can be converted to a valid Date object, then we can use the Date() constructor in JavaScript that returns the Date object.

Let us take an example to resolve the issue using the Date() constructor.

// Declare and store the data into a variable
const currDate = Date.now();

// Prints the UNIX epoch
console.log("Unix time stamp of current date", currDate);

// Converts timestamp into Date Object
const dt = new Date(currDate)

// Print the locale representation of Date string
console.log(dt.toLocaleDateString('en-US'))

Output

Unix time stamp of current date 1655116547338
6/13/2022
If the Date is invalid

If called with an invalid date string, or if the date to be constructed will have a UNIX timestamp less than -8,640,000,000,000,000 or greater than 8,640,000,000,000,000 milliseconds, it returns a Date object whose toString() method returns the literal string Invalid Date

// Declare and store the data into a variable
const currDate = "Hello World";

// Converts date like object into Date Object
const dt = new Date(currDate)

// Print the locale representation of Date string
console.log(dt.toLocaleDateString('en-US'))

Output

Invalid Date

Solution 2 – Performing the type check

We can also perform a type check on the variable to check if it’s a valid date object and has it has the property of type toLocaleDateString before calling the toLocaleDateString() method.

There are 3 logical expression that we need to evaluate.

  • First we need to check if the variable stores a value which of type object
  • Once the first condition passes we need to check if the object is not null
  • Last we need to ensure if the object contains toLocaleDateString property.

Example – Type check using if/else

// Declare and store the data into a variable
const currDate = "2022/05/15";

// Converts date like object into Date Object
const dt = new Date(currDate)

if (typeof dt === 'object' && dt !== null && 'toLocaleDateString' in dt) {

    console.log("The data type is", typeof dt)

    // Print the locale representation of Date string
    console.log(dt.toLocaleDateString('en-US'))

}

else {
    console.log("Invalid Date Object")
}

Output

The data type is object
5/15/2022

Conclusion

The TypeError: toLocaleDateString is not a function occurs if we call a toLocaleDateString() method on the object that is not of Date object. We can resolve the issue by converting the value into Date Object using Date() constructor before calling the toLocaleDateString() method or by performing a type check using typeof to see if the object is of type toLocaleDateString.

Leave a Reply

Your email address will not be published. Required fields are marked *

Sign Up for Our Newsletters

Get notified on the latest articles

You May Also Like
JavaScript Array slice()

JavaScript Array slice()

Table of Contents Hide slice() Exampleslice() Syntaxslice() Parametersslice() Return ValueExample 1: Clone an array using the JavaScript slice() methodExample 2: JavaScript slice() methodExample 3: JavaScript slice() With Negative indexExample 4:…
View Post
JavaScript String endsWith()

JavaScript String endsWith()

Table of Contents Hide endsWith() SyntaxendsWith() ParametersendsWith() Return ValueJavaScript String endsWith() examplesJavaScript endsWith() example with length parameter In JavaScript, the endsWith() method determines whether the given string ends with a…
View Post
JavaScript String startsWith()

JavaScript String startsWith()

Table of Contents Hide startsWith() SyntaxstartsWith() ParametersstartsWith() Return ValueJavaScript String startsWith() examplesJavaScript startsWith() example with Position parameter In JavaScript, the startsWith() method determines whether the given string begins with a…
View Post