格式化从SharePoint使用REST ajax调用获取的日期

时间:2015-07-21 14:18:17

标签: javascript jquery ajax date sharepoint

我正在使用从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,但我觉得没有必要在它已经部分工作的时候添加它。提前谢谢。

2 个答案:

答案 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

在IE11中

答案 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