반응형

오랜만에 글을 쓰는 것 같습니다.

 

원하는 날짜를 입력 후 앞뒤로 1주 전 혹은 2주 후 날짜를 가져와야 하는 문제가 있었는데

 

아래와 같이 매개변수를 현재 날짜를 입력 받고 전 후로 몇일 만큼 전에있는 데이터를 가져올지 세팅하는 함수입니다.

 

일 기준으로 되어있기 때문에

 

한달 단위 , 년 단위는 세팅이 되어있지 않습니다.

 

vDate는 년월일 세팅 Ex)20210827 or 2021-08-27 

vDiff는 몇일 전 후 세팅입니다 EX) 7 (일주일 후 날짜) , -7 (일주일 전 날짜)

function _fnSetDate(vDate,vDiff) {

    var vValue = vDate;
    var vValue_Num = vValue.replace(/[^0-9]/g, "");

    var rxDatePattern = /^(\d{4})(\d{1,2})(\d{1,2})$/; //Declare Regex                  
    var dtArray = vValue_Num.match(rxDatePattern); // is format OK?

    var dtYear = dtArray[1];
    var dtMonth = dtArray[2];
    var dtDay = dtArray[3];

    var nowDate = new Date(dtYear + "/" + dtMonth + "/" + dtDay);
    var weekDate = nowDate.getTime() + (vDiff * 24 * 60 * 60 * 1000);
    nowDate.setTime(weekDate);

    var weekYear = nowDate.getFullYear();
    var weekMonth = nowDate.getMonth() + 1;
    var weedDay = nowDate.getDate();

    if (weekMonth < 10) { weekMonth = "0" + weekMonth; }
    if (weedDay < 10) { weedDay = "0" + weedDay; }
    var result = weekYear + "-" + weekMonth + "-" + weedDay;

    return result;

}

 

 

 

반응형
// EX) fnSetWeekDate("20201202","1week");

function fnSetWeekDate(vNow, vDate) 
{
	var vPrevDate;
	//var vNowDate = new Date().getFullYear() + "-" + _pad(new Date().getMonth() + 1, 2) + "-" + + _pad(new Date().getDate(), 2);

	var vYYYY = vNow.substring(0, 4);
	var vMM = vNow.substring(4, 6);
	var vDD = vNow.substring(6, 8);

	var d = new Date(vMM+"/"+vDD+"/"+vYYYY);
	var dayOfMonth = d.getDate();
	var monthOfYear = d.getMonth();

	if (vDate == "1week") 
	{
		d.setDate(dayOfMonth + 7);
		vPrevDate = d.getFullYear() + _pad(d.getMonth() + 1, 2) + _pad(d.getDate(), 2);
	}
	else if (vDate == "1month") 
	{
		d.setMonth(monthOfYear + 1);
		vPrevDate = d.getFullYear() + _pad(d.getMonth() + 1, 2) + _pad(d.getDate(), 2);
	}
	else if (vDate == "3month") 
	{
		d.setMonth(monthOfYear + 3);
		vPrevDate = d.getFullYear() + _pad(d.getMonth() + 1, 2) + _pad(d.getDate(), 2);
	}

	return vPrevDate;
}

 

_pad 함수

//숫자 width만큼 앞에 0 붙혀주는 함수 EX) widht = 2일떄 1은 01로 찍힘
function _pad(n, width) {
    n = n + '';
    return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;
}

+ Recent posts