Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트 Date.toLocaleString() 메서드 완벽 가이드 – 날짜와 시간을 지역 형식 문자열로 변환하기

JavaScript의 Date 객체는 언어에 기본으로 내장된 데이터 타입으로, 날짜와 시간을 저장하고 다루는 데 사용됩니다. Date 객체는 new Date() 생성자를 호출하여 생성할 수 있습니다.

객체를 한 번 생성하면 다양한 내장 메서드를 통해 조작할 수 있으며, 대부분의 메서드는 현지 시간(local time) 또는 UTC(협정 세계시, GMT) 기준으로 연도, 월, 일, 시, 분, 초, 밀리초 값을 가져오거나 설정하는 역할을 합니다.

그중에서 toLocaleString() 메서드는 Date 객체가 담고 있는 날짜와 시간 정보를 실행 환경의 지역 설정(locale)에 맞는 문자열로 변환하여 반환합니다.

문법

toLocaleString() 메서드의 기본 문법은 다음과 같습니다.

dateObj.toLocaleString([locales[, options]])

localesoptions는 모두 선택 사항이며, 생략하면 브라우저(또는 실행 환경)의 기본 로케일 설정이 자동으로 적용됩니다.

예제 1: 특정 날짜를 지역 형식으로 변환하기

날짜 문자열로 Date 객체를 생성한 뒤 toLocaleString()을 호출하면 해당 날짜가 지역 형식의 문자열로 변환됩니다.

<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.toLocaleString());
  </script>
</body>
</html>

실행 결과

Current Date: 9/26/1989, 12:04:25 PM

참고로 최신 개발 환경에서는 페이지에 직접 출력하는 document.write()보다 console.log()를 사용하는 것이 권장됩니다. 이후 예제부터는 console.log 기준으로 작성했습니다.

예제 2: 인수 없이 호출하여 현재 날짜·시간 구하기

Date 생성자에 아무 값도 전달하지 않으면 객체는 시스템의 현재 날짜와 시간으로 초기화되며, toLocaleString()은 이를 지역 형식의 문자열로 반환합니다.

var now = new Date(); // 인수 없이 생성 → 현재 시각
console.log(now.toLocaleString());
// ko-KR 환경 실행 결과 예: '2025. 6. 12. 오후 3:27:05'

예제 3: 로케일을 지정하여 출력 형식 바꾸기

메서드에 로케일 코드를 문자열로 전달하면 원하는 지역의 형식으로 결과를 얻을 수 있습니다.

var dateObj = new Date('September 26, 89 12:4:25:96');

console.log(dateObj.toLocaleString('en-US'));
// 실행 결과: '9/26/1989, 12:04:25 PM'

console.log(dateObj.toLocaleString('ko-KR'));
// 실행 결과: '1989. 9. 26. 오후 12:04:25'

이처럼 같은 Date 객체라도 로케일에 따라 날짜·시간이 전혀 다른 형식으로 표현됩니다. 국제화(i18n)가 필요한 서비스에서 유용하게 활용할 수 있습니다.

응용: 옵션 객체로 세부 형식 지정하기

두 번째 인수로 옵션 객체를 전달하면 요일 포함 여부, 12/24시간제, 숫자 표기 방식 등을 더 세밀하게 제어할 수 있습니다.

var dateObj = new Date();

console.log(
  dateObj.toLocaleString('ko-KR', {
    weekday: 'long',
    year: 'numeric',
    month: 'long',
    day: 'numeric',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    hour12: true
  })
);
// 실행 결과 예: '2025년 6월 12일 목요일 오후 03:27:05'

동일한 형식을 반복적으로 사용해야 한다면, 매번 toLocaleString()을 호출하는 것보다 Intl.DateTimeFormat 객체를 미리 생성해 재사용하는 것이 성능 면에서 유리합니다.