2012-10-23 7 views
3

가능한 중복 :
Finding date by subtracting X number of days from a particular date in Javascript자바 스크립트 날짜 조작

나는 사용자가 특정 주에서 금요일 선택할 수있는 jQuery datepicker 있습니다. 나는 그 금요일을 기반으로 필드를 채우고 Mon-Thurs의 날짜도 입력하고 싶습니다.

e.e. 사용자는 이번 금요일 (10-26-2012)을 선택하고 목요일 날짜를 얻기 위해 1에서 1을 뺀 다음 물 등을 빼고 싶습니다.

어떻게 접근합니까?

$(document).ready(function(){ 
     $("#friDate").Zebra_DatePicker({ 
      format: 'm-d-Y', 
      disabled_dates: ['* * * 0-4,6'], 
      first_day_of_week: 0, 
      onSelect: function(){ 
       var date = $("#friDate").val(); 
       $("#mon").val('INSERT MON DATE'); 
       $("#tue").val('INSERT TUE DATE'); 
       $("#wed").val('INSERT WED DATE'); 
       $("#thu").val('INSERT THU DATE'); 
       $("#fri").val(date);      
      } 
     }); 
    }); 

모든 도움을 주시면 감사하겠습니다. 감사 :).

+0

날짜 조작 라이브러리를 사용하는 것이 가장 쉬운 방법 일 것입니다. 'date.js'를 검색하십시오. – ahren

+0

감사합니다, 그럴 것입니다 – FunkyMonk91

+0

[Date()] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date)에 대한 문서를 보셨습니까? – epascarello

답변

5

기존 날짜에서 하루를 빼려면 하루의 밀리 초 수를 뺍니다. 내 코드가 작동하지만

var today = new Date(); 
var yesterday = new Date(today.getTime() - 1000*60*60*24); 

// As pointed out by Waxen, we need to account for daylight savings changes 
function addDays(date, days) { 
    var newDate = new Date(date.getTime() + (1000*60*60*24*days)); 
    // To account for daylight savings differences 
    // The hours won't be the same when crossing the daylight savings changes 
    var hourDifference = newDate.getHours() - date.getHours(); 
    var msInHour = 60*60*1000; 
    if (hourDifference > 0) { 
     newDate = new Date(newDate.getTime() + msInHour) ; 
    } else if (hourDifference < 0){ 
     newDate = new Date(newDate.getTime() - msInHour) ;  
    }  
    return newDate;  
} 

그래서 당신의 코드를, 당신은

$("#mon").val(addDays(date, -4)); 
$("#tue").val(addDays(date, -3)); 
$("#wed").val(addDays(date, -2); 
$("#thu").val(addDays(date, -1)); 
$("#fri").val(date);    

다음 UPDATE을 할 수있는, 밀랍의 솔루션은 간단하고 나는 그것을 사용합니다. 이 대답을 참조 용으로 남겨 두겠습니다.

+0

Ahahah 나는 바보처럼 느껴진다. 정말 고마워, 완벽 해! – FunkyMonk91

+1

@ FunkyMonk91 Waxen 덕분에 기능이 향상되어 일광 절약 시간제 변경에도 적용됩니다 –

2

Juan 's soulution은 대부분 작동하지만 하루의 초 수를 가정 할 때 DST에 관한 몇 가지 문제가 발생할 수 있습니다. 그의 addDays 함수의 다음 대체 구현을 사용하는 것이 좋습니다.

function addDays(date, days) { 
    var new_date = new Date(date.getTime()); 
    new_date.setDate(new_date.getDate() + days); 
    return new_date; 
} 
+0

날짜를 m-d-y 형식으로 반환하는 방법은 무엇입니까? – FunkyMonk91

+2

@ FunkyMonk91 그건 새로운 질문입니다. 당신이 맞는 답을 찾지 못한다면, 새로운 질문을 게시해야합니다. 게시물 당 하나의 질문으로 인해 사이트가 더 유용합니다. –

+0

@Waxen 여기에 내 사례가 http://jsfiddle.net/JbxRq/1에서 벗어날 때가 있습니다. –