JavaScript에서 날짜와 시간을 다룰 때, 기존 시간 값에 특정 시간을 더해야 하는 경우가 자주 발생합니다. 이 글에서는 new Date() 객체와 setHours(), getHours() 메서드를 활용해 시간을 손쉽게 추가하는 방법을 알아보겠습니다.
1단계: Date 객체 생성
먼저 날짜 문자열을 사용하여 새로운 Date 객체를 생성합니다.
var dateValue = new Date("2021-01-12 10:10:20");Date 생성자에 날짜/시간 형식의 문자열을 전달하면 해당 값을 가진 Date 객체가 만들어집니다.
2단계: setHours()와 getHours()로 시간 추가
시간을 추가하려면 다음 두 메서드를 함께 사용합니다.
- getHours(): Date 객체에서 현재 '시' 값을 가져옵니다.
- setHours(): Date 객체의 '시' 값을 새로 설정합니다.
즉, getHours()로 현재 시간을 읽어온 뒤 원하는 만큼 더하고, 그 결과를 setHours()에 전달하면 됩니다.
전체 예제 코드
다음은 현재 시간에 2시간을 추가하는 완전한 코드입니다.
var dateValue = new Date("2021-01-12 10:10:20");
dateValue.setHours(dateValue.getHours() + 2);
console.log("변경된 날짜 값 = " + dateValue.toString());
console.log("증가 후의 시(Hours) 값 = " +
dateValue.getHours());코드 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 아래 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo291.js라고 가정하겠습니다.
실행 결과
프로그램을 실행하면 콘솔에 다음과 같은 출력이 표시됩니다.
PS C:\Users\Amit\javascript-code> node demo291.js The date value is=Tue Jan 12 2021 12:10:20 GMT+0530 (India Standard Time) Only Hours value after incrementing=12
결과 분석
원래 시간이 10:10:20이었는데, 2시간을 더해 12:10:20으로 변경된 것을 확인할 수 있습니다. 이처럼 setHours()는 자동으로 시간 계산을 처리해 주므로, 24시간을 넘어가는 경우에도 날짜가 올바르게 갱신됩니다.
참고: 분·초 단위로 시간 추가하기
같은 원리로 setMinutes(), getMinutes(), setSeconds(), getSeconds() 메서드를 사용하면 분이나 초 단위의 시간도 쉽게 추가할 수 있습니다.
// 30분 추가 dateValue.setMinutes(dateValue.getMinutes() + 30); // 45초 추가 dateValue.setSeconds(dateValue.getSeconds() + 45);
이 방법은 별도의 외부 라이브러리 없이 순수 JavaScript만으로 날짜/시간 연산을 처리할 수 있는 가장 간단하고 확실한 방법입니다.