toLocaleString()
Date.prototype.toLocaleString()
: 날짜를 언어별로 구분하여 나타내는 문자열을 반환Array.prototype.toLocaleString()
: 배열의 요소를 나타내는 문자열을 변환되고 이 문자열은 locale 고유 문자열(가령 쉼표 ",")에 의해 분리된다.Object.prototype.toLocaleString()
: 객체로 된 문자열을 반환하고 이 메서드는 지역별로 다른 객체로 재정의되어 표시된다.
Intl.DateTimeFormat API(언어에 맞는 날짜 및 시간 서식을 적용하기 위한 객체) 를 지원하는 구현에서 이 메소드는 단순히 Intl.DateTimeFormat를 호출한다.
예시)
const event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// British English uses day-month-year order and 24-hour time without AM/PM
console.log(event.toLocaleString('en-GB', { timeZone: 'UTC' }));
// Expected output: "20/12/2012, 03:00:00"
// Korean uses year-month-day order and 12-hour time with AM/PM
console.log(event.toLocaleString('ko-KR', { timeZone: 'UTC' }));
// Expected output: "2012. 12. 20. 오전 3:00:00"
toLocaleString()
toLocaleString(locales)
toLocaleString(locales, options)
locales
와 options
은 선택사항이고,
locales
는 Intl.DateTimeFormat 을 지원하지 않는 구현에서는 이 매개변수는 무시되고, 보통 호스트 로케일이 사용된다.
options
은 출력 형식을 조정하는 객체입니다. Intl.DateTimeFormat() 생성자 매개변수 options 와 일치한다.
로케일을 지정하지않고 기본으로 사용하는 경우, 기본 로케일과 옵션으로 포맷된 문자열이 반환된다.
const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
// 인수가 없는 toLocaleString() 은 구현, 기본 로케일, 기본 타임존에 따라 달라집니다
console.log(date.toLocaleString());
// → "12/11/2012, 7:00:00 PM" en-Us 로케일 및 America/Los_Angeles 타임존에서 실행했을 때
지역화된 날짜 및 시간 형식의 일부 변형을 보여준다. 당신의 어플리케이션의 사용자 인터페이스가 사용하는 언어(그리고 일부 대체 언어)의 형식을 얻기 위해서, 반드시 locales 인수를 사용하여 해당 언어를 지정해야한다.
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// 아래의 형식은 로케일의 로컬 타임존을 가정한다
// America/Los_Angeles for the US
// 미국 영어는 달-일-년 순서와 AM/PM이 있는 12시간을 사용합니다
console.log(date.toLocaleString("en-US"));
// → "12/19/2012, 7:00:00 PM"
// 영국 영어는 일-달-년 순서와 AM/PM이 없는 24시간을 사용합니다
console.log(date.toLocaleString("en-GB"));
// → "20/12/2012 03:00:00"
// 한국어는 년-월-일 순서와 AM/PM이 있는 12시간을 사용합니다
console.log(date.toLocaleString("ko-KR"));
// → "2012. 12. 20. 오후 12:00:00"
// 아랍어를 사용하는 대부분의 아랍국가는 동부 아라비안 숫자를 사용합니다
console.log(date.toLocaleString("ar-EG"));
// → "٢٠/١٢/٢٠١٢ ٥:٠٠:٠٠ ص"
// 일본어의 경우, 어플리케이션이 일본 달력을 사용하고 싶을 수 있습니다
// 2012년의 경우 Heisei 24년 이었습니다
console.log(date.toLocaleString("ja-JP-u-ca-japanese"));
// → "24/12/20 12:00:00"
// 발리어와 같이 지원되지 않을 수 있는 언어를 요청할 때, 대체 언어를 포함합니다. (이 경우에는 인도네시아어)
console.log(date.toLocaleString(["ban", "id"]));
// → "20/12/2012 11.00.00"
toLocaleString() 가 제공하는 결과는 options 인수를 사용하여 사용자 정의할 수 있다.
const date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
// Request a weekday along with a long date
const options = {
weekday: "long",
year: "numeric",
month: "long",
day: "numeric",
};
console.log(date.toLocaleString("de-DE", options));
// → "Donnerstag, 20. Dezember 2012"
// 어플리케이션은 UTC를 사용할 수 있고 그것을 보이게 할 수 있습니다.
options.timeZone = "UTC";
options.timeZoneName = "short";
console.log(date.toLocaleString("en-US", options));
// → "Thursday, December 20, 2012, GMT"
// en-US도 24시간 사용이 가능합니다
console.log(date.toLocaleString("en-US", { hour12: false }));
// → "12/19/2012, 19:00:00"
###주의사항 : 포맷된 날짜 값을 정적 값과 비교하지 않기
대부분의 경우, toLocaleString() 가 반환하는 형식은 일관된다. 하지만 이것은 미래에 달라질 수 있고, 모든 언어에 대해 보장되지 않는다. 출력 변형은 설계에 따라 허용되며 사양에 따라 허용된다.
특히 IE 및 Edge 브라우저는 다른 텍스트와 연결될때 출력 텍스트가 자연스럽게 연결되도록, 양방향 제어 문자를 삽입한다.
이러한 이유로, 당신은 정적 값과 toLocaleString() 의 결과 값을 비교할 수 있다고 기대할 수 없다.
아래의 코드는 잘못 사용된 예시이다.
"1/1/2019, 01:00:00" ===
new Date("2019-01-01T01:00:00Z").toLocaleString("en-US");
// Firefox나 다른 기타 브라우저에서 true 입니다
// IE나 Edge에서 false 입니다
예시)
const array1 = [1, 'a', new Date('21 Dec 1997 14:12:00 UTC')];
const localeString = array1.toLocaleString('en', { timeZone: 'UTC' });
console.log(localeString);
// Expected output: "1,a,12/21/1997, 2:12:00 PM",
// This assumes "en" locale and UTC timezone - your results may vary
arr.toLocaleString([locales[, options]]);
locales
와 options
은 위와 마찬가지로 선택사항이다.
var number = 1337;
var date = new Date();
var myArr = [number, date, "foo"];
var str = myArr.toLocaleString();
console.log(str);
// '1337,6.12.2013 19:37:35,foo' 출력(log)
// Europe/Berlin 시간대로 German (de-DE) locale에서 실행하는 경우
예시)
const date1 = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
console.log(date1.toLocaleString('ar-EG'));
// Expected output: "٢٠/١٢/٢٠١٢ ٤:٠٠:٠٠ ص"
const number1 = 123456.789;
console.log(number1.toLocaleString('de-DE'));
// Expected output: "123.456,789"
obj.toLocaleString();
Object의 toLocaleString은 toString()을 호출 한 결과를 객체를 나타내는 문자열로 반환한다.