2013-06-26 24 views
1

我使用下面的腳本用於排序和filteriing表表達
http://javascripttoolbox.com/libsource.php/table/source/table.js經常在歐洲格式排序時間(DD-MM-YYYY)

我日期格式爲:dd-MM-yyyy。

腳本已建成三個正則表達式功能排序日期:

sort.date.formats = [ 
// YY[YY]-MM-DD 
{ 
    re: /(\d{2,4})-(\d{1,2})-(\d{1,2})/, 
    f: function (x) { 
     return (new Date(sort.date.fixYear(x[1]), +x[2], +x[3])).getTime(); 
    } 
} 
// MM/DD/YY[YY] or MM-DD-YY[YY] 
, 
{ 
    re: /(\d{1,2})[\/-](\d{1,2})[\/-](\d{2,4})/, 
    f: function (x) { 
     return (new Date(sort.date.fixYear(x[3]), +x[1], +x[2])).getTime(); 
    } 
} 
// Any catch-all format that new Date() can handle. This is not reliable except for long formats, for example: 31 Jan 2000 01:23:45 GMT 
, 
{ 
    re: /(.*\d{4}.*\d+:\d+\d+.*)/, 
    f: function (x) { 
     var d = new Date(x[1]); 
     if (d) { 
      return d.getTime(); 
     } 
    } 
}]; 

所以現在的問題是,如何在格式正則表達式的日期DD-MM-YYYY是什麼樣子?

我創建了一個的jsfiddle這裏:

http://jsfiddle.net/LgQsu/

請讓我知道,如果你的解決方案適用於該截止日期列!

+0

第二個一定會支持DD-MM-YYYY也一樣,如果你在日期構造周圍交換匹配。 – lonesomeday

+1

只要給出日期'01-02-2013',就不可能知道它是格式爲「DD-MM-YYYY」還是「MM-DD-YYYY」。 –

+0

看看我的jsFiddle在截止日期欄 - 我無法讓它正常工作 – Kenci

回答

2

你搗鼓了一個額外的參考table.js,這是執行的,而不是ÿ我們的JavaScript代碼。此外,要觸發的代碼,需要將其插入頭標籤(「框架&擴展」下的設置)。

您的截止日期列被指定爲排序爲「默認」,這是字母數字。

<th class="table-sortable:date ..." ...> 

修復後,錯誤的日期格式匹配。日期與「YY-MM-DD」(2位數年份)相匹配,而不是「DD-MM-YYYY」,即使日期以4位數年份結尾。那是因爲你的正則表達式不是以^$爲基礎。

sort.date.formats = [ 
    // YY[YY]-MM-DD 
    { 
     re: /^\s*(\d{2,4})-(\d{1,2})-(\d{1,2})\s*$/, 
     f: function (x) { 
      return (new Date(sort.date.fixYear(x[1]),+x[2],+x[3])).getTime(); 
     } 
    }, 
    // DD/MM/YY[YY] or DD-MM-YY[YY] 
    { 
     re: /^\s*(\d{1,2})[\/-](\d{1,2})[\/-](\d{2,4})\s*$/, 
     f: function (x) { 
      return (new Date(sort.date.fixYear(x[3]),+x[2],+x[1])).getTime(); 
     } 
    }, 
    // Any catch-all format that new Date() can handle. This is not reliable except for long formats, for example: 31 Jan 2000 01:23:45 GMT 
    { 
     re: /(.*\d{4}.*\d+:\d+\d+.*)/, 
     f: function (x) { 
      var d=new Date(x[1]); 
      if (d) { 
       return d.getTime(); 
      } 
     } 
    } 
]; 

這裏是一個更新的小提琴,有工作日期排序:

http://jsfiddle.net/fa2Qm/

0

的正則表達式是一樣的第二個即

re: /(\d{1,2})[\/-](\d{1,2})[\/-](\d{2,4})/, 

如果你仔細想想DD-MM-YYYY看上去與MM-DD-YYYY

參數以創建Date對象會發生變化,雖然,注意指標爲X數組的變化:

{ 
    re: /(\d{1,2})[\/-](\d{1,2})[\/-](\d{2,4})/, 
    f: function (x) { 
     return (new Date(sort.date.fixYear(x[3]), +x[2], +x[1])).getTime(); 
    } 
} 
+0

您需要相應地構造Date對象,但是我現在看到了。它不工作,但我會做一個jsFiddle – Kenci

+0

只是更新我的答案,顯示數據對象更改 – vogomatix

+0

嘗試排序我的jsFiddle中的截止日期列,你可以在描述中找到 - 我已經試過實現這個解決方案沒有運氣。 – Kenci