자바스크립트에서 Date 객체를 복제하려면 getTime() 메서드를 활용하는 것이 가장 일반적이고 안전한 방법입니다. Date 객체는 내부적으로 1970년 1월 1일 이후 경과한 시간을 밀리초 단위로 저장하기 때문에, 기존 객체의 타임스탬프 값을 그대로 전달하여 새로운 Date 객체를 생성하면 완전히 독립적인 복사본을 만들 수 있습니다.
예제 코드
아래 예제는 현재 날짜와 시간을 담은 Date 객체를 생성한 뒤, 이를 복제하여 화면에 출력합니다.
<html>
<head>
<title>JavaScript Clone Date</title>
</head>
<body>
<script>
var current_date, clonedDate;
current_date = new Date();
document.write(current_date);
var clonedDate = new Date(current_date.getTime());
document.write("<br>"+clonedDate);
</script>
</body>
</html>
실행 결과
Mon May 28 2018 09:27:54 GMT+0530 (India Standard Time) Mon May 28 2018 09:27:54 GMT+0530 (India Standard Time)
출력 결과를 보면 원본 객체(current_date)와 복제된 객체(clonedDate)가 동일한 날짜와 시간을 가지고 있는 것을 확인할 수 있습니다.
동작 원리
current_date.getTime()는 해당 날짜의 밀리초 단위 타임스탬프를 반환합니다.new Date(timestamp)는 전달받은 타임스탬프를 기준으로 새로운 Date 객체를 생성합니다.- 두 객체는 서로 독립적이므로, 하나의 객체를 수정해도 다른 객체에는 영향을 주지 않습니다.
참고로 ES6 이상 환경에서는 new Date(current_date.valueOf())나 Date.parse(current_date.toString()) 같은 방식도 사용할 수 있지만, 정확성과 호환성 측면에서 getTime()을 이용한 복제 방식이 가장 권장됩니다.