2013-08-09 2 views
4

이상적으로 제가 입력하고 싶은 것은 누군가가 미래의 날짜를 예를 들어 선택하도록 datepicker를 첨부하는 것입니다. [오늘이 글을 쓰는 중 2011 년 9 월 8 일이며 2012 년 7 월 31 일을 반환 받으십시오]자바를 사용하여 미래의 날짜를 기준으로 이전 날짜를 얻으십시오.

어떤 날짜를 선택했는지에 상관없이 자바 스크립트를 사용하는 입력 필드는 항상 기본값을 원할 것입니다. 그 주일 이전의 수요일까지는 선택된 초기 날짜 값이었습니다.

function getWednesday(date) { 
    var d = (date.getDay() == 0 ? 6 : date.getDay() - 3); 
    date.setTime(date.getTime() - (d * 24 * 60 * 60 * 1000)); 
    return date; 
} 

이것은 이번 주 수요일 만 반환합니다. 자바 스크립트 함수 getDay 내 이해 단지 0-6 태양 - 앉아 나타내는 반환합니다. setTime 함수는 1970 년 1 월 1 일부터 밀리 초의 문자열을 취하여 실제 날짜로 변환하고 getTime은 정반대로 수행합니다. 저는이 문제에 대한 견고한 해결책을 얻기 위해 적절한 동의를 얻지 못했습니다. 당신은이를 포함하도록 기능을 조정할 수있는 모든 도움

+1

나는 C#/MVC 태그를 제거했다. 분명히 프로젝트에서 이것을 사용하고 있지만 당신의 질문과 관련이 없다는 것을 안다. :) –

+1

DataJS와 momentJS와 같은 날짜에 대한 많은 훌륭한 라이브러리가있다. 그 (것)들을 통합 하는가 당신은 바닐라 해결책을 원하는가? – Zeta

+0

당신이 언급 한이 datepicker가 jQuery UI datepicker일까요? 그렇다면 날짜 지정자가 날짜 분석 능력을 내장하도록 지정해야합니다! – adeneo

답변

1
의 결혼 이전을 얻어야한다

좋아, 내가 생각할 수있는 가장 영리한 방법은 다음과 같습니다.

function prevWed(inDate){ 
    var adder=(3-inDate.getDay()); 
    var d=new Date(inDate.getFullYear(), inDate.getMonth(), inDate.getDate() + adder - 7); 
    return d 
} 

더 작은 :

return new Date(inDate.getFullYear(), inDate.getMonth(), inDate.getDate() + (3-inDate.getDay()) - 7); 

윌이 작품?

+0

굉장 해요! 처음 선택한 대답! 고맙습니다! – alfadog67

0

에 미리 감사드립니다 :

function getWednesday(date) { 
    var d = (date.getDay() == 0 ? 6 : date.getDay() - 3); 
    date.setTime(date.getTime() - (d * 24 * 60 * 60 * 1000)); 
    return new Date(date.getFullYear(), date.getMonth(), date.getDate()-7); 
} 
alert(getWednesday(new Date())); 

내가 그 일을한다고 생각합니다.

+0

아니요, OP가 원하는대로하지 않습니다. 코드에 약간의 조정을하면 7 월 24 일에 도착합니다 ('getMonths()'는'getMonth()'여야합니다). – putvande

+0

흠 - w3schools.com의 TryIt 에디터에서 7/31을 반환합니다. - OP 요청을 잘못 읽지 않았는지 궁금합니다. 오타를 보내 주셔서 감사합니다 .- 그날 같은 날이었습니다 .- – alfadog67

+0

@ user1182988 on sunday 그것은 이전의 월요일에 간다? –

0
var date = new Date(); 
var wednesday = new Date(date.setDate(date.getDate() - ((date.getDay() == 0 ? 7 : date.getDay()) + 4))); 

오늘의 일 수 (5) + 지난주의 수요일 수를 뺀 일 수를 셉니다.

+0

첫째 날로 일요일을 가진 달은 어떨까요? – Zeta

+0

잘 작동합니다 (최소한 업데이트 된 답변과 함께). – putvande

0
  var d = date.getDay(); 
     if (d == 0) { 
      date.setTime((date.getTime() - 604800000) + 86400000 * 3); 
      return date; 
     } 
     else if (d == 1) { 
      date.setTime((date.getTime() - 604800000) + 86400000 * 2); 
      return date; 
     } 
     else if (d == 2) { 
      date.setTime((date.getTime() - 604800000) + 86400000); 
      return date; 
     } 
     else if (d == 4) { 
      date.setTime((date.getTime() - 604800000) - 86400000); 
      return date; 
     } 
     else if (d == 5) { 
      date.setTime((date.getTime() - 604800000) - 86400000 * 2); 
      return date; 
     } 
     else if (d == 6) { 
      date.setTime((date.getTime() - 604800000) - 86400000 * 3); 
      return date; 
     } 
     else date.setTime(date.getTime() - 604800000); 
     return date; 

이 사실은 내가 조금 어설픈 생각을 원하는 솔루션 ... 롤을 얻을

+2

당신은 이것이 한 줄이라는 것을 알고 있습니까? 'date.setTime ((date.getTime() - 604800000) + 86400000 * (3 - date.getDay());' – Zeta

0

그게 전부는 당신에게 주어진 날짜와 시간

Live Demo

var x = new Date('8/1/2013') ; 
var wed ; 
for(var i=7 ; i > 0 ; i--){ 
    var myday = x.getTime() - (i * 24 * 60 * 60 * 1000) ; 
    var d = new Date(myday) ; 

    if(!!~String(d).indexOf('Wed')) wed = d 

} 
console.log(wed) ; 
관련 문제