Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- javascsript
- node
- Date
- node.js
- 일시정지 모드
- jsp
- tomcat
- SESSION
- 노드 스트림
- prisma timezone
- 흐름 모드
- java
- node js
- prisma
- 동영상 스트리밍
- 스트리밍
- 번역
- 구현
- Spring
- node 스트림
- javascript
- nodejs
- prisma 시간
- 스트림
- servlet
- 자바스크립트 시간 조절
- node stream
- 자바스크립트 시간
- Stream
Archives
- Today
- Total
벤권의 개발자 이야기
JavaScript에서 시간(Date) 객체에 분/시간/일 더하는 법 본문
1. Date에 분(minute)단위로 시간 더하는 법
초 단위를 시간 객체에 더하는 법은 여러가지가 존재하지만 아래 방법이 가장 간단하고 가독성도 좋다고 생각합니다.
const minutes = 3 // 더하기 원하는 시간(분)
let time = new Date(new Date().getTime() + minutes * 60000); // 3분 추가
getTime() 이란 1970 년 1 월 1 일 00:00:00 UTC와 주어진 날짜 사이의 경과 시간 (밀리 초)을 나타내는 숫자입니다.
따라서 60000밀리 초는 1분이므로 위와 같이 getTime()의 결과에 60000*{원하는 시간}을 곱해주면 됩니다.
2. Date에 시간(hour)단위로 시간 더하는 법
분 단위로 시간 객체에 더하는 법은 1번과 같이 밀리 초를 계산하여 더하는 방법도 있지만 getHours()와 setHours를 설정하는게 함수명에서 그 의미를 찾을 수가 있기때문에 해당 함수들을 이용하는게 좋습니다.
let time = new Date();
time = new Date(time.setHours(time.getHours() + 2));
참고로 getHours() 메서드는 주어진 날짜의 현지 시간 기준 시를 반환합니다.
var Xmas95 = new Date('December 25, 1995 23:15:30');
var hours = Xmas95.getHours();
console.log(hours); // 23
3. Date에 일(day)단위로 시간 더하는 법
일 단위로 시간 객체에 더하는 법은 마찬가지로 setDate()와 getDate()함수가 존재하기 때문에 시간 단위로 시간 더하는 법과의 마찬가지의 이유로 해당 함수들을 이용해서 예제를 작성하도록 하겠습니다.
let time = new Date();
time.setDate(time.getDate() + 7);
getDate() 메서드는 주어진 날짜의 현지 시간 기준 일을 반환합니다.
var Xmas95 = new Date('December 25, 1995 23:15:30');
var day = Xmas95.getDate();
console.log(day); // 25
마치며
위와 같이 때마다 시간을 조절하는 것도 좋지만 prototype에 메소드를 추가해서 하는 방법도 코드를 가독성이 좋고 깔끔하게 유지하는 방법이라고 생각합니다. 아래는 prototype을 활용하여 일(day)를 조절하는 예제 코드입니다.
Date.prototype.addDays = function (days) {
const date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
};
// Add 7 Days
const date = new Date('2020-12-02');
console.log(date.addDays(7));
// 2020-12-09T00:00:00.000Z
Comments