IE 11 JavaScript toLocaleDateString()格式问题

IE 11 JavaScript toLocaleDateString()格式问题,javascript,internet-explorer,Javascript,Internet Explorer,我正在使用JavaScript日期函数toLocaleDateString()将我的日期格式化为8/13/2014,但出于某种原因,当我尝试通过API调用发送此值时,我执行了JSON.stringify,然后调整该值,即决定将实际值更改为-8?/-30?/-2014。。这显然会导致后端出现错误 IE为什么要这样做?我如何修复它?您应该在这里查看答案: 您不应该使用旨在为特定于语言环境的人类显示格式化某些内容的函数,而期望输出是机器可解析的。toLocaleString、toLocaleDate

我正在使用JavaScript日期函数toLocaleDateString()将我的日期格式化为
8/13/2014
,但出于某种原因,当我尝试通过API调用发送此值时,我执行了
JSON.stringify
,然后调整该值,即决定将实际值更改为
-8?/-30?/-2014
。。这显然会导致后端出现错误


IE为什么要这样做?我如何修复它?

您应该在这里查看答案:

您不应该使用旨在为特定于语言环境的人类显示格式化某些内容的函数,而期望输出是机器可解析的。toLocaleString、toLocaleDateString或toLocaleTimeString的任何输出仅用于人类可读的显示。(正如Bergi在评论中澄清的,toString也用于人类展示,但ECMA§15.9.4.2说它应该是往返的)

尽管函数返回字符串,但它只是人类可读的,永远不适合机器解析。我不是100%确定IE的编码是什么,但尽管它看起来像一个字符串,但它下面使用了不同的编码


对于日期格式化,您可能希望使用,或者只编写自己的格式化函数。

看起来这是IE11中引入的错误。IE11使用Unicode字符,所以您看到的是

作为解决此问题的临时解决方案,您可以做的是替换该字符。像这样:

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

看起来你有一些字符编码问题。他们到底是什么很难说;确保您的页面、服务器和数据库在使用何种字符编码方面都一致。但不确定在何处设置?我相信所有的都应该是UTF-8。你认为这是
JSON.stringify
?这个问题不会是由
JSON.stringfy
引起的,尽管不清楚你是如何以及为什么这样做的。您可以使用开发人员控制台中浏览器的“网络”选项卡查看HTTP头。该页面必须设置为utf-8,不仅仅是Ajax现在我唯一的解决办法是将我所有的日期转换成
mm/dd/yyyy
格式,这将使
8/13/2014
成为
08/13/2014
…这是一个解决办法,但仍然不能回答为什么会发生这种情况的问题