M. Ahmad Zafar M. Ahmad Zafar - 3 months ago 22
Javascript Question

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)

Answer

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.