编程语言
首页 > 编程语言> > javascript – 使用NaN在IE 11中失败的Date.parse

javascript – 使用NaN在IE 11中失败的Date.parse

作者:互联网

当我尝试在IE 11中解析一个日期时,它给我扔了NaN,但在chrome / firefox中我得到的是以下时间戳1494559800000

Date.parse("‎5‎/‎12‎/‎2017 09:00 AM")

以下是在IE 11中失败的条件.是否有任何其他库或方式我可以在IE 11中解决此问题.

tArray包含[“09:00 AM”,“05:00 PM”];

var tArray = timings.toUpperCase().split('-');
var timeString1 = currentDate.toLocaleDateString() + " " + tArray[0];
var timeString2 = currentDate.toLocaleDateString() + " " + tArray[1];
var currentTimeString = currentDate.toLocaleDateString() + " " + currentTime.toUpperCase();
//Below is the condition which is failing.
if (Date.parse(timeString1) < Date.parse(currentTimeString) 
                 && Date.parse(currentTimeString) < Date.parse(timeString2)) {

我创造了一个假小提琴,它失败了.
https://jsfiddle.net/vwwoa32y/

解决方法:

根据Date.parse()参数的MDN文档:

dateString

A string representing an RFC2822 or ISO 8601 date (other formats may be used, but results may be unexpected).

看起来微软根本没有实现您提供的格式.我不会使用这种格式,因为它依赖于语言环境(可能只是dd / mm / yyyy或有时也可能适合mm / dd / yyyy).

您的解决方案的替代方案是使用moment.js.它具有非常强大的API,用于创建/解析/操作日期.我将展示一些如何使用它的例子:

//Create an instance with the current date and time
var now = moment();

//Parse the first the first argument using the format specified in the second
var specificTime = moment('5‎/‎12‎/‎2017 09:00 AM', 'DD/MM/YYYY hh:mm a');

//Compares the current date with the one specified
var beforeNow = specificTime.isBefore(now);

它提供了更多功能,可以帮助您大大简化代码.

编辑:
我使用moment.js版本2.18.1重写了你的代码,它看起来像这样:

function parseDateCustom(date) {
    return moment(date, 'YYYY-MM-DD hh:mm a');
}

var tArray = ["09:00 AM", "05:00 PM"];
var currentDate = moment().format('YYYY-MM-DD') + ' ';
var timeString1 = parseDateCustom(currentDate + tArray[0]);
var timeString2 = parseDateCustom(currentDate + tArray[1]);
var currentTimeString = parseDateCustom(currentDate + "01:18 pm");

if (timeString1.isBefore(currentTimeString) && currentTimeString.isBefore(timeString2)) {
    console.log('Sucess');
} else {
    console.log('Failed');
}

标签:javascript,internet-explorer-11
来源: https://codeday.me/bug/20190627/1307369.html