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');