2011-11-17 2 views
1

나는 열 중 하나에서 javascript Date 객체로 테이블을 정렬하려고합니다. 날짜 형식은 mm/dd/yyyy hr : 분 a.m입니다. 날짜순으로 정렬하려고하면 머리글을 클릭해도 아무런 변화가 없습니다. 나는 다른 컬럼들로 정렬 할 수있다. console.log 문은 디버깅 목적으로 추가되었으므로 무시할 수 있습니다.어떻게 자바 스크립트로 날짜 개체를 테이블 정렬 할 수 있습니까?

$.tablesorter.addParser({ 
     id: "customDate", 
     is: function(s) { 
      //return false; 
      //use the above line if you don't want table sorter to auto detected this parser 
      //else use the below line. 
      //attention: doesn't check for invalid stuff 
      //2009-77-77 77:77:77.0 would also be matched 
      //if that doesn't suit you alter the regex to be more restrictive 
      var passes = /\d{1,2}\/\d{1,2}\/\d{1,4}\s\d{1,2}:\d{1,2}\s[ap]\.m\./.test(s); 
      return passes; 

     }, 
     format: function(s) { 
      s = s.replace(/\-/g," "); 
      s = s.replace(/:/g," "); 
      s = s.replace(/\./g," "); 
      s = s.replace(/\//g," "); 
      s = s.replace(/a\sm/, 1); 
      s = s.replace(/p\sm/, 2); 
      s = s.split(" "); 
      console.log('am or pm: ' + s[5]); 
      console.log('hour == ' + s[3]); 
      if (s[3] == '12' && s[5] == 1){ 
       s[3] = 0; //convert 12am to 0 hours. 
       console.log('new hour -- 12am: ' + s[3]); 
      } 
      else if (s[5] == 2 && s[3] != '12'){ 
       s[3] = parseInt(s[3]) + 12; //convert p.m. hours to military time format if it isn't noon. 
       console.log('new hour -- pm: ' + s[3]); 
      } 
      console.log('minutes: ' + parseInt(s[4])); 
      console.log(); 

     return $.tablesorter.formatFloat(new Date(s[2], s[0], s[1], s[3], s[4],0,0,0)); 
     }, 
     type: "numeric" 
    }); 
+0

(S [0]) 개월이 자바 스크립트 날짜 개체를 기반으로 제로이기 때문에 정확한 날짜를 얻을 수 있습니다. 그러나 모든 날짜가 1 개월 만에 끝나기 때문에 정렬에 영향을 미치지 않습니다. 그리고 24 시간은 "군대 시간 형식"이 아니며, 전세계 대부분의 민간인이 널리 사용합니다. 항공사. – RobG

답변

0

글쎄, 내 문제를 수정했습니다. 내 date 객체에서 getTime()을 호출하면 날짜에 대한 숫자 값이 반환되며이를 정렬 할 수 있습니다. 같은

코드 줄이 지금 보이는 : 당신은 개월 수에서 1을 subract 필요

return $.tablesorter.formatFloat(new Date(s[2], s[0], s[1], s[3], s[4],0,0,0).getTime()); 
0

UTC date format : 20111117을 사용하면 알파벳 순으로 정렬 할 수 있습니다.

+1

UTC는 날짜 형식이 아니며 표준 시간대입니다. 당신이 찾고있는 것은 ISO8601 포맷으로 날짜는 yyyy-mm-dd이고 시간과 존을 포함 할 수 있습니다. [Date.prototype.toUTCString()] (http://es5.github.com/#x15.9.5.42)를 제안하는 경우 'String의 내용은 구현에 따라 다릅니다.'라는 점에 유의하십시오. – RobG

관련 문제