컴퓨터 Javascript 날짜 더하기
2020.11.26 00:41
두 개가 있는데 하나는 새로운 Date 객체를 생성해서 리턴해주는 것으로 해당 메소드가 호출된 객체의 값은 변하지 않는다. 나머지 하나는 Date 객체 그 자체가 바뀌는 것이다.
/**
* @type : prototype_function
* @access : public
* @desc : 자바스크립트의 내장 객체인 Date 객체에 add 메소드를 추가한다. add 메소드는 구분과 입력값에 따라 날짜/시간을 더하고 뺀 새로운 Date 객체를 return 한다.
* <pre>
* 원래 일자가 2019-01-01 00:00:00이라고 하면
* var originDate = new Date(2019, 0, 1);
* var date = originDate.add("day", 45); ==> 2019-02-15 00:00:00 (45일 후), originDate는 변경없음
* or
* var date = originDate.add("month", -20); ==> 2017-05-01 00:00:00 (20개월 전), originDate는 변경없음
* or
* var date = originDate.add("second", 128); ==> 2019-01-01 00:02:08 (128초 후), originDate는 변경없음
* </pre>
* 위의 예에서 date 변수는 new Date()에서 구분과 입력값에 따라 더해진 값이다.
* <pre>
* # type
* year : 연수를 더하고 뺄 때
* month : 개월수를 더하고 뺄 때
* day : 일수를 더하고 뺄 때
* hour : 시를 더하고 뺄 때
* minute : 분을 더하고 뺄 때
* second : 초를 더하고 뺄 때
* # param
* number 타입이어야 함
* 범위의 제한은 없으므로 월의 경우 연도가 변경될 수 있고, 일의 경우 연도/월 변경될 수 있음. 시, 분, 초 모두 동일
* </pre>
* @return : 새롭게 생성되어 변경된 Date Object.
* @author :
*/
Date.prototype.add = function(type, param) {
if(typeof(param) != "number") {return this;}
var returnDate = new Date(this.getFullYear(), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds());
switch(type)
{
case "year":
returnDate.setYear(this.getFullYear() + param);
break;
case "month":
returnDate.setMonth(this.getMonth() + param);
break;
case "day":
returnDate.setDate(this.getDate() + param);
break;
case "week":
returnDate.setDate(this.getDate() + (param * 7));
break;
case "hour":
returnDate.setHours(this.getHours() + param);
break;
case "minute":
returnDate.setMinutes(this.getMinutes() + param);
break;
case "second":
returnDate.setSeconds(this.getSeconds() + param);
break;
default:
break;
}
return returnDate;
};
/**
* @type : prototype_function
* @access : public
* @desc : 자바스크립트의 내장 객체인 Date 객체에 addThis 메소드를 추가한다. addThis 메소드는 구분과 입력값에 따라 해당 객체 자신의 날짜/시간을 더하고 뺀다.
* <pre>
* 현재 일시가 2019-01-01 00:00:00이라고 하면
* var originDate = new Date(2019, 0, 1);
* originDate.addThis("day", 45); ==> 2019-02-15 00:00:00 (45일 후)
* originDate.addThis("month", -20); ==> 2017-06-15 00:00:00 (20개월 전) (위에서 addThis 로 date 객체를 변경했기 때문임. 위의 행을 실행하지 않았다면 2017-05-01 00:00:00 임)
* originDate.addThis("second", 128); ==> 2017-06-15 00:02:08 (128초 후) (위에서 addThis 로 date 객체를 변경했기 때문임. 위의 행들을 실행하지 않았다면 2019-01-01 00:02:08 임)
* </pre>
* 위의 예에서 date 변수는 현재 날짜/시각 Date에서 구분과 입력값에 따라 변경될 Date 객체이다.
* <pre>
* # type
* year : 연수를 더하고 뺄 때
* month : 개월수를 더하고 뺄 때
* day : 일수를 더하고 뺄 때
* hour : 시를 더하고 뺄 때
* minute : 분을 더하고 뺄 때
* second : 초를 더하고 뺄 때
* # param
* number 타입이어야 함
* 범위의 제한이 없으므로, 월의 경우 연도가 변경될 수 있고, 일의 경우 연도/월 변경될 수 있음. 시, 분, 초 모두 동일
* </pre>
* @return : 변경된 Date Object.
* @author :
*/
Date.prototype.addThis = function(type, param) {
if(typeof(param) != "number") {return this;}
switch(type)
{
case "year":
this.setYear(this.getFullYear() + param);
break;
case "month":
this.setMonth(this.getMonth() + param);
break;
case "day":
this.setDate(this.getDate() + param);
break;
case "week":
this.setDate(this.getDate() + (param * 7));
break;
case "hour":
this.setHours(this.getHours() + param);
break;
case "minute":
this.setMinutes(this.getMinutes() + param);
break;
case "second":
this.setSeconds(this.getSeconds() + param);
break;
default:
break;
}
return this;
};
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 | 추천 수 |
|---|---|---|---|---|---|
| 835 | 예송논쟁 | RanomA | 2003.01.14 | 3938 | 0 |
| 834 | 갑자사화와 연산군식의 개혁 | RanomA | 2003.01.14 | 2297 | 0 |
| 833 | 이인화와 영원한 제국 | RanomA | 2003.01.14 | 1636 | 0 |
| 832 |
이상한 신문...
| RanomA | 2003.01.14 | 1023 | 10 |
| 831 | 필요한 건 상상력과 꼼꼼함... 그리고 긴 호흡... | RanomA | 2003.02.02 | 1249 | 0 |
| 830 | 일단 1권 다 읽었음... | RanomA | 2003.02.03 | 1398 | 0 |
| 829 | 추가로 영화와 책의 차이점. | RanomA | 2003.02.04 | 1327 | 0 |
| 828 | 성종이 어우동에게 느꼈던 분노감 | RanomA | 2003.02.11 | 2450 | 0 |
| 827 | 비둘기 가족을 부른 이석이라는 사람... | RanomA | 2003.02.16 | 1571 | 0 |
| 826 | 대한민국의 맘에 안드는 점 하나... | RanomA | 2003.02.19 | 1284 | 0 |
| 825 | 저는 오늘 꽃을 받았어요. [3] | RanomA | 2003.02.23 | 1516 | 0 |
| 824 | 난방보다 냉방이 어려운 이유... | RanomA | 2003.02.24 | 1911 | 0 |
| 823 | 그들이 하고픈 말은... [1] | RanomA | 2003.03.04 | 1210 | 0 |
| 822 | 제로보드와 내 홈피 게시판의 차이... | RanomA | 2003.03.09 | 2271 | 0 |
| 821 |
자료실의 첨부파일 개수가 무한대로...
| RanomA | 2003.03.26 | 1157 | 0 |
| 820 | MySQL 백업관련 명령어 몇 개 | RanomA | 2003.03.28 | 1123 | 0 |
| 819 |
MySQL 매뉴얼
| RanomA | 2003.03.28 | 936 | 14 |
| 818 |
Informix FAQ for Monitor, Tune, Support
| RanomA | 2003.04.08 | 926 | 11 |
| 817 | '근로자의 날'보다는 '노동절'이라고 칭합시다. | RanomA | 2003.04.29 | 981 | 0 |
| 816 | 나이수~~~ 유시민~~~ [2] | RanomA | 2003.04.29 | 1047 | 0 |






