在Internet Explorer中无法将UTC日期转换为本地日期

时间:2017-05-15 10:59:30

标签: javascript date internet-explorer-11 momentjs datejs

以下是我从后端"2017-05-23T18:30:00"收到的日期,

这在Chrome中运行良好:

  • 致电:new Date('2017-05-23T18:30:00').toString()
  • 结果:"Wed May 24 2017 00:00:00 GMT+0530 (India Standard Time)"

但是在Internet Explorer上:

  • 致电:new Date('2017-05-23T18:30:00').toString()
  • 结果:"Tue May 23 2017 18:30:00 GMT+0530 (India Standard Time)"

当我在Chrome中获取时,可以从Internet日历中的UTC日期获取本地日期时间吗?

2 个答案:

答案 0 :(得分:1)

您可以使用moment.utc来解析输入的跨浏览器。然后,您可以使用format()来显示您的时刻对象。如果您需要将时刻对象转换为JavaScript日期,则可以使用toDate()方法。

如果您想将您的时刻转换为当地时间,请使用local()

有关其他信息,请参阅Local vs UTC vs Offset

这是一个实时样本:



var input = '2017-05-23T18:30:00';
var m = moment.utc(input);
console.log(m.format());
console.log(m.toDate().toString());

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

IE浏览器将采用&#39; mm-dd-yy&#39;的格式。如果你提供的格式为&#39; yy-mm-dd&#39;结果无效日期。

使用以下函数将UTC转换为LocalDate。

function convertUTCDateToLocalDate(utcDate) {
    var formattedDate = utcDate.getMonth()+'-'+utcDate.getDate()+'-'+utcDate.getFullYear();
    var hours = utcDate.getHours();
        var minutes = utcDate.getMinutes();
        var seconds = utcDate.getSeconds()
        var newDate = new Date(formattedDate + ' ' + hours + ':' + minutes+":"+seconds+" UTC");
    return newDate;   
}
var localDate = convertUTCDateToLocalDate(yourUTCDate);