JavaScript에는 날짜와 시간을 다루기 위한 내장 객체인 Date 객체가 있습니다. Date 객체는 new Date() 생성자를 통해 아래와 같이 생성할 수 있습니다.
Date 객체가 한 번 생성되면, 이를 조작할 수 있는 다양한 메서드들을 사용할 수 있습니다. 대부분의 메서드는 현지 시간(local time) 또는 UTC(협정 세계시, GMT) 기준으로 객체의 연도, 월, 일, 시, 분, 초, 밀리초 값을 가져오거나 설정하는 역할을 합니다.
이 중 setFullYear() 메서드는 연도를 나타내는 정수값을 인자로 받아, Date 객체에 저장된 현재 연도를 해당 값으로 변경(대체)하는 기능을 수행합니다.
문법(Syntax)
setFullYear() 메서드의 기본 문법은 다음과 같습니다.
dateObj.setFullYear(yearValue);
필요에 따라 월(monthValue)과 일(dayValue)도 함께 인자로 전달할 수 있으며, 생략하면 기존 값이 유지됩니다.
예제 1: 기존 연도 변경하기
다음 예제에서는 1989년으로 생성된 Date 객체의 연도를 setFullYear()로 변경하는 과정을 보여줍니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var dateObj = new Date('september 26, 89 12:4:25:96');
document.write("Current date: "+dateObj.toUTCString());
document.write("<br>");
dateObj.setFullYear(99);
document.write("Date after setting the new year: "+dateObj.toUTCString());
</script>
</body>
</html>실행 결과
Current date: Tue, 26 Sep 1989 06:34:25 GMT Date after setting the new year: Sat, 26 Sep 2009 06:34:25 GMT
위 예제에서 주목할 점은 setFullYear(99)처럼 두 자리 숫자를 전달하면 99년이 아니라 1999년이 아닌 99년 그대로 해석되지 않고, JavaScript의 연도 매핑 규칙(0~99는 1900년대로 변환)에 따라 처리된다는 것입니다. 실제 결과에서 2009년으로 표시된 것처럼, 브라우저나 실행 환경에 따라 해석이 달라질 수 있으므로 연도는 네 자리 숫자(예: 2024)로 전달하는 것이 안전합니다.
예제 2: 연도 없이 생성한 객체에 연도 설정하기
Date 객체를 생성할 때 연도를 지정하지 않았더라도, setFullYear() 메서드를 사용하면 나중에 연도를 설정할 수 있습니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var dateObj = new Date('23, August');
document.write("<br>");
dateObj.setFullYear(2018)
document.write(dateObj.toDateString());
</script>
</body>
</html>실행 결과
Thu Aug 23 2018
생성 시점에 연도 정보가 없었음에도 불구하고, setFullYear(2018) 호출 후 '2018년 8월 23일'이라는 완전한 날짜가 만들어진 것을 확인할 수 있습니다.
예제 3: 빈 생성자로 생성한 객체에 연도 설정하기
같은 원리로, 생성자에 아무 값도 전달하지 않고 Date 객체를 만든 경우에도 이 메서드로 연도를 설정할 수 있습니다. 이때 월과 일 값은 현재 날짜 기준으로 유지됩니다.
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var dateObj = new Date();
document.write("<br>");
dateObj.setFullYear(2018)
document.write(dateObj.toDateString());
</script>
</body>
</html>실행 결과
Thu Oct 18 2018
정리
setFullYear()는 Date 객체의 연도만 간편하게 교체할 수 있는 유용한 메서드입니다. 핵심 포인트를 정리하면 다음과 같습니다.
- 연도를 나타내는 정수를 인자로 받으며, 선택적으로 월과 일도 함께 지정할 수 있습니다.
- 연도를 지정하지 않고 생성한 Date 객체에도 사용할 수 있습니다.
- 두 자리 숫자(0~99)는 예기치 않게 해석될 수 있으므로, 네 자리 연도를 사용하는 것이 권장됩니다.