JSFiddle - React, Tailwind, and code Playground

by skadudg_coolhuny

JavaScript

//파라미터 2017, 51 반환값 20171225
function dateFromNextWeekNumber(year, week) {
  var d = new Date(year, 0, 1);
  var dayNum = d.getDay();
  var diff = --week * 7;

  // If 1 Jan is Friday to Sunday, go to next week
  if (!dayNum || dayNum > 4) {
    diff += 7;
  }

  // 4. 다음주차의 첫날짜를 반환한다.
  d.setDate(d.getDate() - d.getDay() + ++diff);
  alert(d.getFullYear());
  alert(d.getMonth()+1);
  alert(d.getDate());
}

//파라미터 시작일(2017, 12, 21) , 반환값 주차(51)
function ISO8601_week_no(dt) 
  {
     var tdt = new Date(dt.valueOf());
     var dayn = (dt.getDay() + 6) % 7;
     
     tdt.setDate(tdt.getDate() - dayn + 3);
     var firstThursday = tdt.valueOf();
     tdt.setMonth(0, 1);
     if (tdt.getDay() !== 4) {
      tdt.setMonth(0, 1 + ((4 - tdt.getDay()) + 7) % 7);
     }
     alert( 1 + Math.ceil((firstThursday - tdt) / 604800000) ) ;
  }

//dt = new Date();
//alert(ISO8601_week_no(dt));
//1. 날짜를 입력받아서
dt = new Date(2017, 12-1, 21);
//2. 주차를 반환한다.
ISO8601_week_no(dt);

//3. 주차를 입력받아서
dateFromNextWeekNumber('2017', '51');