2017-05-12 51 views
3

當我嘗試在IE 11剖析的日期,它扔我的NaN,但在Chrome/Firefox中,我得到以下timestamp 1494559800000Date.parse未能在IE 11與南

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/

+1

你正在展示該字符串包含了一堆不可打印的字符('Date.parse(」 <00e2><0080><008e> 5 ...'),你確定它不是由那個造成的嗎? – robertklep

+0

@robertklep:我在那裏展示那個? – Shane

+0

嗯,它們是不可打印的,所以它們不是_showing_,但它們是_there_。將該行代碼粘貼到Node或Chrome控制檯並執行它將返回'NaN'這兩種情況。 – robertklep

回答

2

根據MDN文檔爲Date.parse()參數:

dateString

表示RFC2822或ISO 8601的日期(其他格式也可以使用,但結果可能是意外)的字符串。

看起來像微軟根本沒有實現你提供的格式。我不會使用這種格式,因爲它依賴於語言環境(可能只是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'); 
}