Skip to content Skip to sidebar Skip to footer

IE 11 Issue With JavaScript ToLocaleDateString() Formatting

I am using the JavaScript Date function toLocaleDateString() to format my date to look like 8/13/2014, but for some reason when I try to send this value via an API call by doing a

Solution 1:

Looks like it's a bug that was introduced in IE 11. IE 11 uses Unicode chars, so what you see is U+200E 'LEFT-TO-RIGHT MARK'

What you can do as a temporary solution to fix this issue is to replace that char. Like this:

console.log((new Date()).toLocaleDateString().replace(/\u200E/g, ''));

Solution 2:

You should check out the answer here: ToLocaleDateString() changes in IE11

You shouldn't be using a function intended to format something for locale-specific human display and expect the output to be machine parsable. Any of the output of toLocaleString, toLocaleDateString, or toLocaleTimeString are meant for human-readable display only. (As Bergi clarified in comments, toString is also meant for human display, but ECMA §15.9.4.2 says it should round-trip)

Although the function returns a string, it's only human-readable and is never appropriate for machine parsing. I'm not 100% sure what encoding it is for IE, but although it looks like a string, underneath it uses a different encoding.

For date formatting, you may wish to use Moment.js, or just write your own formatting function.


Post a Comment for "IE 11 Issue With JavaScript ToLocaleDateString() Formatting"