2009-03-03 4 views

답변

6

Datejs library은 비교적 쉽게 그런 일을 할 수있는 것처럼 보입니다.

+2

와우이 라이브러리는 최고입니다! – arahaya

5

코드 :

function getPreviousSunday() 
{ 
    var today=new Date(); 
    return new Date().setDate(today.getDate()-today.getDay()-7); 
} 


function getPreviousMonday() 
{ 
    var today=new Date(); 
    if(today.getDay() != 0) 
     return new Date().setDate(today.getDate()-7-6); 
    else 
     return new Date().setDate(today.getDate()-today.getDay()-6); 
} 

추론 :

당신이 이전 주 첫날 무엇을 의미하는 따라 달라집니다. 이 토론을 위해 이전 일요일을 의미한다고 가정합니다.

는 일 수 뺄 확인하는 방법은 다음과 같습니다

  • 는 현재 요일을 가져옵니다. 현재 요일이 일요일 인 경우 현재 일 월요일 경우 현재 날짜가 토요일 인 경우
  • 당신은 ... 당신이 팔일

을 빼기

  • 을 칠일
  • 빼기 십삼일

당신은 뺄 일 수를 결정하면 실제 코드는 간단하다

var previous_first_day_of_week=new Date().setDate(today.getDate()-X); 

여기서 X는 상기 언급 된 값이다. 이 값은 오늘입니다 .getDay() + 7

주의 첫 번째 날까지 다른 것을 의미하는 경우 위 단계에서 답을 추론 할 수 있어야합니다.

참고 : 음수 값을 setDate 함수에 전달하면 올바로 작동합니다.

월요일 코드입니다. 월요일 전에 getDay() 명령을 내리기 때문에 특별한 경우가 있습니다. 그래서 우리는 근본적으로 getDay()를 getDay()의 saturday 값 +1로 대체하여 일요일을 주말에 다시 주문합니다.

getDay()가 우리가 원하는 것보다 매일 1을 더 높이기 때문에 월요일에 뺄셈에 6을 사용합니다.

1
주의

첫날 일요일 또는 월요일 중 하나가 당신이 어떤 국가에 따라 될 수 있습니다

a.setDate(a.getDate()-7-a.getDay()); 
: 당신은 당신이 사용할 수있는 이전 일요일에 dateobject을 설정하려면

function getPrevSunday(a) { 
    return new Date(a.getTime() - ((7+a.getDay())*24*60*60*1000)); 
}; 

function getPrevMonday(a) { 
    return new Date(a.getTime() - ((6+(a.getDay()||7))*24*60*60*1000)); 
}; 

이전 월요일 :

a.setDate(a.getDate()-6-(a.getDay()||7)); 
2
function previousWeekSunday(d) { 
    return new Date(d.getFullYear(), d.getMonth(), d.getDate() - d.getDay() - 7); 
} 

function previousWeekMonday(d) { 
    if(!d.getDay()) 
     return new Date(d.getFullYear(), d.getMonth(), d.getDate() - 13); 
    return new Date(d.getFullYear(), d.getMonth(), d.getDate() - d.getDay() - 6); 
} 
+0

이전 주 월요일에 버그가 있습니다. 모든 일요일은 6 일만 돌아갑니다. – some

+0

큰 잡기. 결정된. – Prestaul

2

다른 사람들의 게시물을 이해하지 못했습니다. 주어진 일에 상대적인 일 - 토 주를 표시하는 데 사용하는 자바 스크립트입니다.그래서, 예를 들어, 얻을 "지난 주,"당신은 일/토 골대 일곱 일 전을 기준으로 무엇인지 확인하고 있습니다 : new Date()-7

// variables 
    var comparedate = new Date()-7; // a week ago 
    var dayofweek = comparedate.getDay(); 

    // just for declaration 
    var lastdate; 
    var firstadate; 

    // functions 
    function formatDate (dateinput) // makes date "mm/dd/yyyy" string 
    { 
     var month = dateinput.getMonth()+1; 
     if(month < 10) { month = '0' + month } 

     var date = dateinput.getDate(); 
     if(date < 10) { var date = '0' + date } 

     var dateoutput = month + '/' + date + '/' + dateinput.getFullYear(); 

     return dateoutput; 
    } 

    // Sunday to Saturday ... Sunday is the firstdate, Saturday is the lastdate 
    // (modify this block if you want something different eg: Monday to Sunday) 
    if (dayofweek == 6) { lastdate = comparedate; firstdate = comparedate-6; }   // Saturday 
    else if (dayofweek == 0) { lastdate = comparedate+6; firstdate = comparedate; }  // Sunday 
    else if (dayofweek == 1) { lastdate = comparedate+5; firstdate = comparedate-1; } // Monday 
    else if (dayofweek == 2) { lastdate = comparedate+4; firstdate = comparedate-2; } // Tuesday 
    else if (dayofweek == 3) { lastdate = comparedate+3; firstdate = comparedate-3; } // Wednesday 
    else if (dayofweek == 4) { lastdate = comparedate+2; firstdate = comparedate-4; } // Thursday 
    else if (dayofweek == 5) { lastdate = comparedate+1; firstdate = comparedate-5; } // Friday 

    // Finish 
    var outputtowebpage = formatDate(firstdate) + ' - ' + formatDate(lastdate); 
    document.write(outputtowebpage); 

내가 가진 것은 내가해야 할 때마다이를 조회하기 . 그래서, 이것이 다른 사람들에게 도움이되기를 바랍니다.

+0

"특정 날짜와 관련하여"하는 것은 고객이 "1 주일에 완료 한 항목을 분류하는 도구"와 같은 것을 원하지만, 내가 가진 전부는 데이터 세트에서 작업 할 완료 날짜입니다 따라서 코드는 상대적으로주의 이름 집합을 즉석에서 생성해야합니다. – undrline

+0

SailsJS에서 코드를 시험해 보았습니다. TypeError : comparate.getDay가 함수가 아닙니다. ' –

+0

@Lexynux, SailsJS에 익숙하지 않습니다. 비교 항목의 철자가 같은 경우에도 변수를 생성하는 동안 7을 빼는 것이 좋지 않을 수도 있습니다. 같은 것을 시도하십시오 : 'var comparate = new Date(); // 오늘 comparate - = 7; // 주일 전 var dayofweek = comparate.getDay();' – undrline

0

다른 예들에서는 일요일이 다른 달에 떨어질 때 문제가 발생합니다. 그러면 문제가 해결됩니다.

var today, todayNumber, previousWeek, week, mondayNumber, monday; 
today = new Date(); 
todayNumber = today.getDay(); 
previousWeek = -1; //For every week you want to go back the past fill in a lower number. 
week = previousWeek * 7; 
mondayNumber = 1 - todayNumber + week; 
monday = new Date(today.getFullYear(), today.getMonth(), today.getDate()+mondayNumber); 
관련 문제