2014-07-11 30 views
0

我試圖使用Jquery的tablesorter插件訂購這樣的時刻...的jQuery的tablesorter如何排序時間格式2014-07-11-02.10.03

2014-07-11-零三年二月一十日

所以這是...

YYYY-MM-DD-HH.mi.ss

我試圖按照一前一後(date Sorting Problem with Jquery Tablesorter),然後執行以下....

$.tablesorter.addParser({ 
    id: "customDate", 
    is: function(s) { 
     return /\d{1,4}-\d{1,2}-\d{1,2}-\d{1,2}-\d{1,2}.\d{1,2}\.\d+/.test(s); 
    }, 
    format: function(s) { 
     s = s.replace(/\-/g," "); 
     s = s.replace(/:/g," "); 
     s = s.replace(/\./g," "); 
     s = s.split(" "); 
     return $.tablesorter.formatFloat(new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]).getTime()+parseInt(s[6])); 
    }, 
    type: "numeric" 
}); 

$("#tabHistoryBackups").tablesorter({ 
    sortList: [[3,1],[0,0]], 
    stripeRowsOnStartUp: true 
}); 

但它不工作,我無法理解,我會我會錯。請有人幫我解決這個問題,並告訴我我有什麼問題?這是我的桌子的樣子。

enter image description here

感謝

回答

1

您的日期時間值不包含毫秒,所以你需要更新相應的正則表達式:

is: function(s) { 
    return /\d{1,4}-\d{1,2}-\d{1,2}-\d{1,2}\.d{1,2}\.\d{1,2}/.test(s); 
}, 

您可能還注意到,.已經逃脫(\. )表示文字.。這是因爲,除非它已被轉義或成爲字符類的一部分,否則.是RegEx元字符,意思是「任何」。

您還需要更新format方法忽略毫秒,因爲你的價值不包含他們:

format: function(s) { 
    s = s.replace(/\-/g, " "); 
    s = s.replace(/\./g, " "); 
    s = s.split(" "); 
    return $.tablesorter.formatFloat(new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]).getTime()); 
} 
相關問題