티스토리 뷰

이번주가 몇주차인지 계산해주는 로직.

 

사용 방법

아래 코드를 추가 하시고 console.log(new Date().getWeek()); 이렇게 하시면 이번주가 몇주차 인지 나옵니다.

 

2022년 3월 29일은 13주차에 들어갑니다.

 

파라메터 dowOffset은 Day Of Week의 Offset값으로  .getWeek(3) 이렇게 하면 1주일의 시작이 3일후부터로 시작합니다. 만약 1주일 시작이 수요일부터이고 싶다면 3을 넣으면 되고 목요일부터이고 싶다면 4를 넣으면 됩니다.

 

Date.prototype.getWeek = function (dowOffset) {
  /*getWeek() was developed by Nick Baicoianu at MeanFreePath: http://www.meanfreepath.com */

  dowOffset = typeof(dowOffset) == 'number' ? dowOffset : 0; // dowOffset이 숫자면 넣고 아니면 0
  var newYear = new Date(this.getFullYear(),0,1);
  var day = newYear.getDay() - dowOffset; //the day of week the year begins on
  day = (day >= 0 ? day : day + 7);
  var daynum = Math.floor((this.getTime() - newYear.getTime() -
    (this.getTimezoneOffset()-newYear.getTimezoneOffset())*60000)/86400000) + 1;
  var weeknum;
  //if the year starts before the middle of a week
  if(day < 4) {
    weeknum = Math.floor((daynum+day-1)/7) + 1;
    if(weeknum > 52) {
      let nYear = new Date(this.getFullYear() + 1,0,1);
      let nday = nYear.getDay() - dowOffset;
      nday = nday >= 0 ? nday : nday + 7;
      /*if the next year starts before the middle of
        the week, it is week #1 of that year*/
      weeknum = nday < 4 ? 1 : 53;
    }
  }
  else {
    weeknum = Math.floor((daynum+day-1)/7);
  }
  return weeknum;
};

4번라인 dowOffset초기화 하는 부분은 parameter로 넘어온 값이 'number'라면 받은 값으로 초기화 하고 아니면 0으로 초기화 해줍니다.

 

dowOffset = typeof(dowOffset) == 'number' ? dowOffset : 0; 이 부분은 수정했습니다. 원래는 number대신 int였는데 nodejs버젼이 올라가서 바뀐듯 싶습니다.

refer

https://stackoverflow.com/questions/9045868/javascript-date-getweek

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함