我正在使用从SharePoint获取的数据创建一个简单的表。一切都在谷歌浏览器中完美运行,但我在使用Internet Explorer 11时遇到了一些问题。日期是以这种格式从SharePoint中提取的:
2015-03-17T00:00:00
处理此问题的代码部分是:
var dateReceived = data.d.results[i].DateReceived;
if (dateReceived !== null){dateReceived = new Date(parseInt(dateReceived.replace("/Date(", "").replace(")/", ""), 10)).toLocaleString('en-US', {
year: 'numeric',
month: 'numeric',
day: '2-digit'
});}
else {dateReceived = "";}
正如我所提到的,这在Chrome中完美运行,而日期显示在MM / DD / YYYY格式中。但在这样的IE节目中显示:“2015年3月16日星期一晚上8点00分”。我在这做错了什么?我可以尝试一下moment.js,但我觉得没有必要在它已经部分工作的时候添加它。提前谢谢。
答案 0 :(得分:4)
Internet Explorer处理日期对象的方式与其他浏览器不同。在不涉及不必要的细节的情况下,为什么不只是从SharePoint创建返回值的新Date
对象,然后将其转换为所需的区域设置格式?
以下代码
var date = new Date("2015-03-17T00:00:00");
var formatDate = date.toLocaleString('en-US', {year: "numeric", month: "numeric", day: "numeric" });
console.log("Formated date is: " + formatDate);
输出
Formated date is: 3/17/2015
。
答案 1 :(得分:1)
将.replace(/[^ -~]/g,'')
添加到IE的LocaleString。
代码看起来像
var date = new Date("2015-03-17T00:00:00");
var formatDate = date.toLocaleString('en-US', {year: "numeric", month: "numeric", day: "numeric" }).replace(/[^ -~]/g,'');
console.log("Formated date is: " + formatDate);
输出
Formated date is: 3/17/2015