适用于IE和Chrome的ToLocaleDateString()解决方法

san*_*zer 3 javascript internet-explorer google-chrome date

我正在使用JS函数声明一个var日期,该日期是该月的第一天.即今天将是11/01/2017(mm/dd/yyyy).该功能运行良好,但IE 11+不会接受它,而是抛出一些额外的功能,然后表单将拒绝作为有效日期,但在Chrome中它完美地工作.

我已将代码更改为以下内容,这适用于两个浏览器..

//Calculate and assign next available 1st day of the month
 var date = new Date();
 firstDay = new Date(date.getFullYear(), date.getMonth()+1, 1);
 firstDay = (new Date(firstDay).toLocaleString('en-US').replace(/[^ -~]/g,''));  
Run Code Online (Sandbox Code Playgroud)

但输出是:11/1/2017,%2012:00:00%20AM...这是功能上正确的,因为我的表格选择"11/1/2017"部分,并忽略其余,在IE和Chrome上,但是我如何更改上面的代码,所以它只会删除" ,%2012:00:00%20AM"?它只是为了整理URL这是传递用户数据

Kai*_*ido 6

Date.toLocaleString接受一个选项参数,允许声明您的输出方式.

在你的情况下,你会想要{day: 'numeric', month:'numeric', year:'numeric'}:

var date = new Date();
firstDay = new Date(date.getFullYear(), date.getMonth() + 1, 1);
firstDay = new Date(firstDay).toLocaleString('en-US', {
      day: 'numeric',
      month: 'numeric',
      year: 'numeric'
    }).replace(/[^ -~]/g,'');
console.log(firstDay);
Run Code Online (Sandbox Code Playgroud)
(这与Date.toLocaleDateString没有选项的确相同)

  • 跟我说说.. IE是一种痛苦.此外,.replace的添加排序问题,上面的代码片段在chrome和IE上完美运行!谢谢 (2认同)