2017-02-27 100 views
2

我有一個網頁上的下面的代碼:格式的日期顯示爲NaN在IE

var date = new Date(row.EventDate.replace('T', ' ')); // 'T' comes from sql server 
var month = date.getMonth() + 1; 
var day = date.getDate(); 
var year = date.getFullYear(); 
var hours = date.getHours(); 
var minutes = date.getMinutes(); 
return '<span>' + 
    (month > 9 ? month : '0' + month) + 
    '/' + 
    (day > 9 ? day : '0' + day) + 
    '/' + 
    year + 
    ' ' + 
    (hours > 9 ? hours : '0' + hours) + 
    ':' + 
    (minutes > 9 ? minutes : '0' + minutes) + 
    '</span>'; 

丁目顯示爲02/27/2017 13:30如預期,但IE瀏覽器顯示NaN/NaN/NaN NaN:NaN

我看了一下問題的幾個職位設置有這樣的問題的日期字段,但我設置了一個文本字符串。

我在哪裏斷開連接,爲什麼IE瀏覽器抱怨不是一個數字?

+2

我假定爲row.EventDate格式是YYYY-MM-DD HH:MM:SS?如果是這樣,IE就一直在努力。看看這裏:http://biostall.com/javascript-new-date-returning-nan-in-ie-or-invalid-date-in-safari/ –

+0

@瑞克伯恩斯 - 是的,它作爲一個直接Linq拉從SQL Server –

+0

@RickBurns令人驚歎的鏈接由您提供。 Greate –

回答

0

IE瀏覽器已經困擾了一段時間。以下格式將適用於大多數(所有)現代瀏覽器。更改您的row.EventDate模型輸出以匹配以下格式之一,並且它應該工作得很好。

來源:http://biostall.com/javascript-new-date-returning-nan-in-ie-or-invalid-date-in-safari/

var d = new Date(2011, 01, 07); // yyyy, mm-1, dd 
 
var d = new Date(2011, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss 
 
var d = new Date("02/07/2011"); // "mm/dd/yyyy" 
 
var d = new Date("02/07/2011 11:05:00"); // "mm/dd/yyyy hh:mm:ss" 
 
var d = new Date(1297076700000); // milliseconds 
 
var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); // ""Day Mon dd yyyy hh:mm:ss GMT/UTC

+0

跨瀏覽器的唯一格式是ISO 8601格式(即「2011-02-07T11: 05:00Z「) –

+0

@MikeMcCaughan,不正確:http://dygraphs.com/date-formats.html –

+0

OMG!感謝Mike的迴應,我嘗試從我的代碼中移除''''.replace('T','')'''''''''2017-01- 01 00:00:00'''到'''2017-01-01T00:00:00'''加上它完美無缺! –