반응형
fullcalendar를 사용하면서 필요했던 조회하고 있는 주차가 그달의 몇주차인지 계산해주는 함수입니다.
주차를 계산할 때에 기준은 목요일을 기준으로 계산하며 그 주에 목요일이 없는 경우에는 무조건 -1이 넘어오고
type이 'f'이면 첫째주 여부를 'l'이면 마지막주 여부를 Boolean 형으로 리턴해주며 type이 null or undefined일 경우에는 몇 주차인지 return해 줍니다.
중간중간 지인의 javascript 라이브러리인 라온이 활용된 부분이 있습니다.
소스코드
Date.prototype.getBizWeekOfMonth(type){
var d = new Date(this.getTime());
var d_first = new Date(this.getTime());
var d_last = new Date(this.getTime());
var d_temp = new Date(this.getTime());
d_first.setDate(1);
d_temp.setDate(1);
d_last.setDate(1);
d_last.addMonth(1);
d_last.addDate(-1);
var left = d_last.left(d_first);
var tmp = [];
var day_left = 4 - d.getDay();
d.addDate(day_left);
for(var i = 0; i <= left; i++) {
if(d_temp.getDay() == 4){
tmp.push(d_temp.toStr("yyyy-MM-dd"));
}
d_temp.addDate(1);
}
var idx = tmp.indexOf(d.toStr("yyyy-MM-dd"))
if(type != undefined){
var _type = type.toLowerCase();
if(_type == "f"){
return idx == 0;
}
else if(_type == "l"){
return idx == tmp.length - 1;
}
}
return idx != -1 ? idx + 1 : -1;
}
실행 결과
/*2015-12-03 기준*/
new Date().getBizWeekOfMonth(); // 1
new Date().getBizWeekOfMonth('f'); // true
new Date().getBizWeekOfMonth('l'); // false
반응형
'DEV > Javascript' 카테고리의 다른 글
문자를 유니코드로 변환하기 (0) | 2017.03.20 |
---|---|
window.print() 호출 이전/이후 이벤트 처리 (0) | 2017.03.17 |
[Javascript]Array를 n개씩 나누기 (5) | 2017.03.15 |
[Javascript]뒤로가기 이벤트 발생시 자바스크립트 실행하기 (1) | 2017.03.15 |
[Angular]AngularJS 필터에서 $sce.trustAsHtml() 사용하기 (0) | 2017.03.15 |