在javascript中使用Date.toLocaleString时在结果字符串中获取%FD

在javascript中使用Date.toLocaleString时在结果字符串中获取%FD,javascript,forms,http-post,Javascript,Forms,Http Post,我正在寻找一种从javascript中的Date对象中获取月名和星期日名的方法,遇到了以下帖子:David Storey在这里指向Date.tolocalString()方法。起初,这看起来效果很好。我可以这样做来获取月份名称,而无需定义数组: var someDate = new Date(2018, 8, 28); var locale = "en-us" var month = someDate.toLocaleString(locale, { month: "short" }).toLo

我正在寻找一种从javascript中的
Date
对象中获取月名和星期日名的方法,遇到了以下帖子:David Storey在这里指向
Date.tolocalString()
方法。起初,这看起来效果很好。我可以这样做来获取月份名称,而无需定义数组:

var someDate = new Date(2018, 8, 28);
var locale = "en-us"
var month = someDate.toLocaleString(locale, { month: "short" }).toLowerCase();
这将给我一个月变量中的
aug
。但我注意到了一个问题。最终,我将月和周值放入隐藏的表单字段中,这些字段将与表单一起发布。当表单发布时,我没有得到预期的值。例如,查看月份字段的过账值时,我得到的不是
aug
,而是
%FDaug
,星期几的值也是如此。但是如果我在发布之前检查了调试器中的值,它们看起来是正确的。我不知道
%FD
是从哪里来的,但这意味着我不能使用这种方法,除非有什么方法可以先把它去掉。我查看了函数的文档,但没有看到与此问题相关的任何内容

现在,我回到使用月和日的名称数组,并进行查找以获得这些名称。有人知道为什么在使用
Date.toLocaleString
时会引入额外的ascii字符吗

下面是浏览器调试器的屏幕截图,我在IE、Edge和Chrome中尝试过。Chrome看起来还可以,但IE和Edge有这种行为。我还没有试过Firefox

发布前的值。。。

发布的值


我认为你必须根据这篇文章定义一个数组或删除这些字符:如果你能证明只为日期添加一个dep是合理的,我建议使用moment.js来处理日期:@MichaelCurry谢谢你的建议。我选择了数组选项,因为我不需要处理不同的地区,也不想仅仅为了这个而引入一个新的库。