2011-05-16 3 views
1

저는 '01 : 30 : 00 '으로 시간을 저장하고 있습니다. 시작 시간과 날짜 시간 드롭 다운이 있습니다. 드롭 다운을 시작 시간 + 1 시간으로 설정합니다. 자바 스크립트 또는 jquery를 통해 시간을 추가하는 방법이 있습니까?자바 스크립트를 사용하여 시간을 늘리는 방법이 있습니까?

여기에 내 현재 코드입니다 :

$(".start_time").change(function(){ 
     $(".end_time").val($(this).val()); 
}); 
+0

두 드롭 다운의 순서가 같은 옵션이 있습니까? 둘 다 매시간입니까? –

+0

둘 다 같은 순서로 옵션이 있습니다. 그들은 시간당 30 분입니다. 그래서 오전 1시, 오전 1시 30 분 등 – raeq

답변

3

이 시도 :

  • 시작 시간의 선택된 인덱스를 찾을
  • 2에 의해 그것을 범프 최종 시간을 찾기 위해 인덱스
  • 인덱스 연산자로 %을 사용하면 인덱스 0 또는 1 (각각 00:00 및 00:30)으로 되돌릴 수 있습니다.
  • $(".start_time").change(function(){ 
         var sel =$(this).attr('selectedIndex'); 
         var endIdx = (sel + 2) % 48; // 47 is 23:30, so 48 should go back to index 0 
         $(".end_time").attr('selectedIndex', endIdx);   
    }); 
    

    Try it out on JSBin

.

+0

꽤 영리한 (+1). 그러나 선택 옵션의 수만큼 mod를 잊어 버리지 않아 마지막 또는 마지막 두 번째 옵션을 선택하면 다시 감싸줍니다. – Domenic

+0

@Dom : 감사합니다. 나는 그것에 대해 잊어 버렸다. 제안에 감사드립니다! –

+1

if 및 the 대신에 endIdx = (sel + 2) % 47'을 제안 할 수 있습니까? – Domenic

0

기본 예 ...

var date = new Date(); 
var h = date.getHours() + 1; 
var m = date.getMinutes(); 
var s = date.getSeconds(); 
alert('One hour from now: ' + h + ':' + m + ':' + s); 

데모 : 당신은 당신이 날짜/시간 문자열을 구문 분석 한 후 http://jsfiddle.net/fBaDM/2/

0

, 당신은 다음과 같은 방법을 사용할 수 있습니다 .setHours (자세한 내용은 Mozilla Developer Center).

날짜 및 시간 작업에 대해서는 을 적극 권장합니다. 나는 그것이 당신을 위해 매우 편리 할 것이라 확신합니다.

protip : "jQuery markup"으로 JavaScript를 대체하지 마십시오. 결국 JS 다. :)

1

두 가지 개별적인 문제가 있습니다. 첫 번째는 .start_time 입력에서 시간을 구문 분석하고 두 번째는 1 시간 후에이를 증가시키는 것입니다.

첫 번째 작업은 실제로 문자열 조작 연습입니다. 문자열의 조각을 파싱하면 (예 : 정규식을 통해 Date 인스턴스로 변환하고 setHours을 사용하거나 구성 요소를 숫자로 조작하고이를 원하는 형식으로 문자열로 재구성 할 수 있습니다.

다음과 같이의 예는 다음과 같을 수 있습니다

var TIME_PARSING_REGEX = /([0-9]{2}):([0-9]{2}):([0-9]{2})/; 

function padToTwoDigits(number) { 
    return (number < 10 ? "0" : "") + number; 
} 

$(".start_time").change(function() { 
    var stringTime = $(this).val(); 
    var regexResults = TIME_PARSING_REGEX.exec(stringTime); 

    var hours = parseInt(regexResults[1], 10); 
    var newHours = (hours + 1) % 24; 

    var newHoursString = padToTwoDigits(newHours); 
    var minutesString = regexResults[2]; 
    var secondsString = regexResults[3]; 

    var newTimeString = newHoursString + ":" + minutesString + ":" + secondsString; 
    $(".end_time").val(newTimeString); 
}); 
관련 문제