2015-06-03 109 views
-1

我使用Date.js解析日期和時間的字符串Date.parse顯示錯誤

var start_time='10-Jun-15 12:00 am'; 
var end_time='10-Jun-15 12:00 pm'; 

當警報

alert(Date.parse(start_time)); 
alert(Date.parse(end_time)); 

第一個顯示

Wed Jun 10 2015 12:00:00 GMT+0530 (India Standard Time) 

和第二個顯示

null 

如何解決這個.thanks提前

+2

適合我的作品,你確定這是你試過的嗎? – Arvind

+0

而不是Date.parse爲什麼你不嘗試'new Date(start_time)' –

+1

是不是應該用引號? – Incognito

回答

0

編輯:

我檢查你的日期格式在Chrome和FF。 Firefox不理解這種格式,但在Chrome中它工作正常。

我使用'2015年6月10日中午12:00'格式,它在兩種瀏覽器都能正常工作。

因此,您應該嘗試刪除破折號並使用全年或使用任何其他日期格式。

日期應該是RFC2822 or ISO 8601日期格式。

+0

隨着OP更新他的問題,您的答案變得無效。 – Zee

0

您描述的缺陷也出現在Safari,Firefox和Chrome中。而不是修復庫,這是一個簡單的函數來解析你的日期格式。 2位數字不是一個好主意,功能將它們視爲+2000。三位和四位數年份按原樣處理。

// Parse date format dd-mmm-yy hh:mm ap 
// Two digit years are treated as 2000 
// Years of three digits or more are treated as is 
function parseDmY(s) { 
    var months = {jan:0,feb:1,mar:2,apr:3,may:4,jun:5, 
       jul:6,aug:7,sep:8,oct:9,nov:10,dec:11}; 
    var b = s.split(/[- :]/); 
    var h = (b[3]%12) + (/pm/i.test(b[5])? 12 : 0); 
    var y = +b[2] + (b[2] < 100? 2000 : 0) 
    return new Date(y, months[b[1].toLowerCase()], b[0], h, b[4]); 
} 

console.log(parseDmY('10-Jun-2015 12:00 pm')); 

兩位數的年份也可以在當前年份的-70到+30的範圍內進行處理。

0

如果您的日期字符串始終以該格式提供,則使用Date.parseExact將解決問題...並且比使用Date.parse更有效。

var start_time='10-Jun-15 12:00 am'; 
var end_time='10-Jun-15 12:00 pm'; 

alert(Date.parseExact(start_time, 'dd-MMM-yy hh:mm tt')); 
alert(Date.parseExact(end_time, 'dd-MMM-yy hh:mm tt')); 

希望這有助於。