728x90
스터디 공부하면서 짜본 윤년 계산된 2월날짜와 년월일 시분초를 가져다쓰는 Javascript util을 만들어보았습니다.
더 좋은 로직이나 의견내주시면 감사하겠습니다 .
is29Days = [4, 6 , 9 ,11];
/**
* @author zzdd1558@gmail.com
*
* @description 윤년이 계산되어 나오는 현재 시간 및 날짜 .
* */
class DateUtil {
constructor() {
this.dateObj = new Date();
this.year = this.dateObj.getFullYear();
this.month = this.dateObj.getMonth() + 1;
this.day = this.dateObj.getDate();
this.maxYear = 120;
}
/**
* @method isLeapYear
* @description 윤년인지 아닌지 확인
*
* @param {Number} selectYear
*
* @return {Boolean} true or false
* */
isLeapYear(selectYear = this.year) {
return selectYear % 4 === 0 && selectYear % 100 !== 0 || selectYear % 400 === 0;
}
/**
* @method getYear
* @description 현재 년도와 최소 년도를 가져옴
*
* @return {Object} key : currYear : 현재 년도
* minYear : 회원가입시 사용할 최소 년도
* */
getYear() {
return {"currYear": this.year, "minYear": this.year - this.maxYear}
}
/**
* @method getDays
* @description 윤년과 월에따른 일 계산
*
* @param {Number} selectYear 년
* @param {Number} selectMonth 월
*
* @return {Number} 일
* */
getDays(selectYear = this.year, selectMonth = this.month) {
selectYear = Number(selectYear);
selectMonth = Number(selectMonth);
if (selectMonth === 2) {
if (this.isLeapYear(selectYear)) {
return 29;
} else {
return 28;
}
}
if (is29Days.includes(selectMonth)) {
return 30;
} else {
return 31;
}
}
/**
* @method getCurrentDate
* @description 객체가 만들어진 시점에서의 CurrentDate
*
* @return {Object} 년 월 일
* */
getCurrentDate() {
return {
"currYear": this.year,
"currMonth": this.month,
"currDays": this.day
}
}
/**
* @method getCurrentTime
* @description 현재 시분초를 반환
*
* @return {Object} 시 분 초
* */
getCurrentTime() {
let currDate = new Date();
return {
"currHour": currDate.getHours(),
"currMinute": currDate.getMinutes(),
"currTime": currDate.getSeconds()
}
}
/**
* @method getCurrentDateAndTime
* @description 년 월 일 시 분 초
*
* @return {Object} 년 월 일 시 분 초
* */
getCurrentDateAndTime() {
return Object.assign(this.getCurrentDate(), this.getCurrentTime())
}
728x90
반응형
'Javascript' 카테고리의 다른 글
[Javascript] velog에서 사용하는 태그 입력 기능 만들어보기 (0) | 2020.12.13 |
---|---|
[Javascript] 페이지 다국어 처리 (0) | 2020.02.06 |
댓글