针对IE和Chrome的ToLocaleDateString()解决方法
我正在使用JS函数来声明该日期的下一个可用第一天的var日期。即今天将是11/01/2017(mm/dd/yyyy)。该功能是完美的工作,但IE 11 +不会采取它,而是抛出一些额外的功能,该表格然后会拒绝,因为不是一个有效的日期,但在Chrome中,它的工作完美。针对IE和Chrome的ToLocaleDateString()解决方法
伊夫改变了代码以下,这两个浏览器的工作原理..
//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,''));
但是输出为:11/1/2017,%2012:00:00%20AM..
。这是功能上正确的,因为我的表单拾取"11/1/2017
“的一部分,并忽略了其余部分,在IE浏览器& Chrome上,但是我怎么能改变上面的代码,所以它只会删除”,%2012:00:00%20AM
“?它只是为了整理这是沿用户数据传递的URL
Date.toLocaleString
接受一个option参数允许声明你想如何输出。
你的情况,你会希望{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);
Date.toLocaleDateString
不带选项)
完美的工作,但IE浏览器不会采取它,即时获取屏幕上的输出:无效的GET数据,这是我与我的最后一个功能,= 11/1/2017 ..最初的问题..如果你复制粘贴那个日期,在'='之前是一个不可见的字符,我注意到,因为我总是必须在URL中回退两次,甚至在这个评论框中,是否可以将.replace添加到上面的代码片段中? – sanitizer
@sanitizer当然,我把它加回来了,我不确定它做了什么,我没有手中的IE来体验这个问题。 – Kaiido
告诉我关于它的事情.. IE是一种痛苦。此外,.replace的添加对问题进行了排序,并且上面的代码片段在Chrome和IE浏览器上都可以很好地工作!谢谢 – sanitizer
您可以使用toLocaleDateString,这会给你只是日期部分地区格式。
var d = new Date();
console.log(d.toLocaleDateString("en-US"));
您既可以使用
firstDay = date.getDate() + '/' + (date.getMonth() + 1) '/' + date.getFullYear().
或者
firstDay = new Date(firstDay).toLocaleString('en-US')
我不明白你只是想显示11/1/2017?如果它假设被用作字符串,那么由于某种原因,您的变量firstDay必须是Date?你可以写firstDay = date.getDate()+'/'+(date.getMonth()+ 1)'/'+ date.getFullYear()。或者你想要别的东西? –
或甚至可能是 firstDay =(new Date(firstDay).toLocaleString('en-US'))。Substring(0,10); –