2013-12-09 5 views
0

안녕하세요, 저는 JavaScript의 초보자이며 여기에 게시하기 전에 많은 노력을했습니다.자바 스크립트로 데이터 분석

jquery UI의 Datapicker를 사용하여 일부 데이터 범위를 선택하는 두 개의 입력 태그가 있습니다. jQuery 메서드 .val()으로이 값을 선택한 후에 Datepicker에서이 데이터 형식 인 12/30/2013을 사용하지만이 데이터를 2013-10-21T00:00:00으로 구문 분석해야하는데이 날짜 범위를 사용하여 getJSON 메서드를 호출해야하기 때문에 웹 서버를 호출합니다. 수동으로 파싱하려면이 함수를 작성했습니다. 벨로우가 내 코드 야, 뭐가 잘못 됐어? 일반적으로이 형식의 입력 태그에서 데이터를 변환하는 방법을 찾고 싶습니다 : yyyy-MM-dd'T'HH:mm:ss 우리 웹 서버가 나머지 형식을 허용하기 때문입니다.

<input id="from" type="text" class="datepicker" /> 
<input id="to" type="text" class="datepicker" /> 
<input id="submit" value="Send" type="submit" /> 
<script>  
$(function() { 
     $(".datepicker").datepicker(); 
    }); 

    $("#submit").click(function() { 

     var from = $('#from').val(); 
     var to = $('#to').val(); 

     function parse(i) { 
      var t = i.toString().split("/"); 
      var y = t[2]; 
      var m = t[0]; 
      var d = t[1]; 
      var n_d = y.concat("-") + m.concat("-") + d.concat("T00:00:00"); 
      return n_d; 
     } 


    $.getJSON("xxxx/?from=" + parse(from) + "&to=" +parse(to)); 

    }); 

</script> 
+0

가능한 중복 : http://stackoverflow.com/a/1056730/722135 – Babblo

+0

이 http://momentjs.com 한 번 봐, 날짜로 작업 할 때 정말 강력합니다. – ToniTornado

답변

0

당신은 $(element).datepicker('getDate')를 사용하여 실제 날짜 개체를 얻을 수 있고, 그럼 그냥 원하는 형식으로 사람들을 구문 분석하고 멀리 보내

Number.prototype.padLeft = function(base,chr){ 
    var len = (String(base || 10).length - String(this).length)+1; 
    return len > 0? new Array(len).join(chr || '0')+this : this; 
} 

function parseDate(d) { 
    return [d.getDate().padLeft(), (d.getMonth()+1).padLeft(), d.getFullYear()].join('/')+'T'+ 
      [d.getHours().padLeft(), d.getMinutes().padLeft(), d.getSeconds().padLeft()].join(':'); 
} 

$(function() { 
    $(".datepicker").datepicker(); 

    $("#submit").click(function() { 
     var from = $('#from').datepicker('getDate'); 
     var to = $('#to').datepicker('getDate'); 

     $.getJSON("xxxx/?from=" + parseDate(from) + "&to=" + parseDate(to)); 
    }); 
}); 

FIDDLE

을 당신이 것 같은데요 그 날짜를 URL로 인코딩하려면 아마도 그냥하는 것이 더 낫다.

$.getJSON("xxxx/", {from : parseDate(from), to : parseDate(to)}); 
1

Date.parseDate.prototype.toISOString을 시도해보십시오

var date = Date.parse('12/30/2013');//1388347200000 
date = new Date(date);//"Mon Dec 30 2013 00:00:00 GMT+0400 (MSK)" 
date.toISOString;//"2013-12-29T20:00:00.000Z" 
+0

'Date.parse'에는 문제가있는 것으로 알려져 있으며, MDN에서도 호환성 테이블은 빨간색 물음표로 구성되어 있습니다. 'Date.parse'를 사용할 때 어떤 일이 발생하는지 전혀 알지 못하기 때문에 일부에서는 작동 할 수 있습니다 브라우저, 일부 브라우저에서 작동하지 않을 수 있습니다. 아무도 정말로 모르는 것 같습니까? 'toISOString' 또한 IE9 이상에서만 지원되므로 일반적으로 문자열을 직접 작성하는 것이 좋습니다. – adeneo

+0

예,하지만 많은 폴리 ​​필이 있습니다. [one] (https://github.com/ckozl/JavaScript-iso8601-Date-Parsing--xbrowser-polyfill-)을 사용할 수 있습니다. – Pinal

관련 문제