JavaScript-toLocaleString()

hannah·2023년 9월 20일
0

JavaScript

목록 보기
88/121
post-custom-banner

toLocaleString()

  • Date.prototype.toLocaleString() : 날짜를 언어별로 구분하여 나타내는 문자열을 반환
  • Array.prototype.toLocaleString() : 배열의 요소를 나타내는 문자열을 변환되고 이 문자열은 locale 고유 문자열(가령 쉼표 ",")에 의해 분리된다.
  • Object.prototype.toLocaleString() : 객체로 된 문자열을 반환하고 이 메서드는 지역별로 다른 객체로 재정의되어 표시된다.

1. Date.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)

localesoptions은 선택사항이고,
locales는 Intl.DateTimeFormat 을 지원하지 않는 구현에서는 이 매개변수는 무시되고, 보통 호스트 로케일이 사용된다.
options은 출력 형식을 조정하는 객체입니다. Intl.DateTimeFormat() 생성자 매개변수 options 와 일치한다.

toLocaleString() 사용

로케일을 지정하지않고 기본으로 사용하는 경우, 기본 로케일과 옵션으로 포맷된 문자열이 반환된다.

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 사용

지역화된 날짜 및 시간 형식의 일부 변형을 보여준다. 당신의 어플리케이션의 사용자 인터페이스가 사용하는 언어(그리고 일부 대체 언어)의 형식을 얻기 위해서, 반드시 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"

options 사용

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 입니다

2. Array.prototype.toLocaleString()

예시)

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]]);

localesoptions은 위와 마찬가지로 선택사항이다.

toLocaleString 사용

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에서 실행하는 경우

3. Object.prototype.toLocaleString()

예시)

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()을 호출 한 결과를 객체를 나타내는 문자열로 반환한다.

post-custom-banner

0개의 댓글