M. Ahmad Zafar
M. Ahmad Zafar

Reputation: 4939

JavaScript: Difference between toString() and toLocaleString() methods of Date

I am unable to understand the difference between the toString() and toLocaleString() methods of a Date object in JavaScript. One thing I know is that toString() will automatically be called whenever the Date objects needs to be converted to string.

The following code returns identical results always:

​var d = new Date();
document.write( d + "<br />" );
document.write( d.toString() + "<br />" );
document.write( d.toLocaleString() );

​ And the output is:

Tue Aug 14 2012 08:08:54 GMT+0500 (PKT)
Tue Aug 14 2012 08:08:54 GMT+0500 (PKT)
Tue Aug 14 2012 08:08:54 GMT+0500 (PKT)

Upvotes: 18

Views: 27983

Answers (5)

Alok Ranjan
Alok Ranjan

Reputation: 1097

Just to add. Apart from Date, it also converts/formats the normal variable. Both functions used to format/convert the passed parameter to string but how parameter is formatted is the point to look on.

toLocalestring() used to return the formatted string based on which geography the function is called.

For the sake of simplicity. Take this example. It shows how toString() won't format the variable but toLocaleSting() will format it based on locale setting of the geography.

let number = 1100;
console.log(number.toString()); // "1100"
console.log(number.toLocaleString())  // 1,100

let number = 1100;
console.log(number.toString());
console.log(number.toLocaleString());

It is a great help for programmer in order to avoid to write extra function to format the string or Date. toLocaleString() will take care of this.

Hope you would find it somewhat helpful & interesting.

Upvotes: 0

Viktor Soroka
Viktor Soroka

Reputation: 217

I am just checked in console of the Chrome for date and found the difference in the presentation format. Hope this could help.

var d = new Date();

console.log(d.toLocaleString()); //"04.09.2016, 15:42:44"
console.log(d.toString());       //"Sun Sep 04 2016 15:42:44 GMT+0300 (FLE Daylight Time)"

Upvotes: 3

phenomnomnominal
phenomnomnominal

Reputation: 5515

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString

Basically, it formats the Date to how it would be formatted on the computer where the function is called, e.g. Month before Day in US, Day before Month in most of the rest of the world.

EDIT:

Because some others pointed out that the above reference isn't necessary reliable, how's this from the ECMAScript spec:

15.9.5.2 Date.prototype.toString ( )

This function returns a String value. The contents of the String are implementation->> dependent, but are intended to represent the Date in the current time zone in a convenient, human-readable form.

15.9.5.5 Date.prototype.toLocaleString ( )

This function returns a String value. The contents of the String are implementation->>dependent, but are intended to represent the Date in the current time zone in a convenient, human-readable form that corresponds to the conventions of the host environment‘s current locale.

Since you can hopefully assume that most implementations will reflect the specification, the difference is that toString() is just required to be readable, toLocaleString() should be readable in a format that the should match the users expectations based on their locale.

Upvotes: 21

RobG
RobG

Reputation: 147403

Lots of references, but none are authoritative. Note that Mozilla's documentation is for JavaScript, which is their version of ECMAScript for browsers. Other browsers use other implementations and therefore, while the MDN documentation is useful, it is not authoritative (it is also a community wiki, so not even official Mozilla documentation) and does not necessarily apply to other browsers.

The definitive reference is the ECMAScript Language specification, where the behaviour of both Date.prototype.toString and Date.prototype.toLocaleString are explained in browser independent terms.

Notable is the for both methods, the string is implementation dependent, which means that different browsers will return different strings.

Upvotes: 1

The Internet
The Internet

Reputation: 8103

Converts a date to a string, using the operating system's locale's conventions.

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString

toLocaleString behaves similarly to toString when converting a year that the operating system does not properly format.

Upvotes: 5

Related Questions