🌱Intro
- 자바스크립트를 이용해서 숫자, 시간, 날짜 형식을 간결하게 나타내고 싶은 경우가 많습니다.
- 이때 자바스크립트 내장 객체(Intl)을 사용하면 좋습니다.
- Intl 객체는 문자열 비교, 숫자 형식, 날짜 및 시간 형식을 제공하는 ECMAScript 국제화 API의 네임스페이스 입니다.
- 국제화(Internalization)란 여러가지 언어로 서비스를 할 수 있도록 웹 앱을 설계하고 구현하는 과정을 말합니다.
- Intl 객체를 이용하면 동일한 데이터를 언어나 지역별로 다른 형식을 보여줄 수 있습니다.
- 외부 라이브러리를 사용해서도 다국어 지원 서비스를 이용할 수 있습니다.
- 이제 숫자, 시간, 날짜 형식을 쉽고 간편하게 포맷팅 해보겠습니다.
🌱1. 숫자 형식
const views = 30593195
const formatter = new Intl.NumberFormat('ko')
formatter.format(views)
const formatter2 = new Intl.NumberFormat('ko', { notation: 'compact' })
formatter2.format(views)
const formatter3 = new Intl.NumberFormat('en', {
notation: 'compact',
compactDisplay: 'long',
})
formatter3.format(views)
const formatter4 = new Intl.NumberFormat(navigator.language, {
notation: 'compact',
compactDisplay: 'long',
})
formatter4.format(views)
🌱2. 가격 형식
- 가격을 간결하게 설정해 보겠습니다.
- NumberFormat 함수의 두번째 인자 자리에 options 매개변수를 지정해서 결과를 원하는 형태로 바꿀 수 있습니다.
const price = 10000
const formatter5 = new Intl.NumberFormat('ko', {
style: 'currency',
currency: 'krw',
})
formatter5.format(price)
const formatter6 = new Intl.NumberFormat('ko', {
style: 'currency',
currency: 'krw',
notation: 'compact',
})
formatter.format(price)
const formatter7 = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'usd',
})
formatter7.format(price)
const formatter8 = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'usd',
notation: 'compact',
})
formatter8.format(price)
🌱3. 시간 형식
const formatter9 = new Intl.RelativeTimeFormat('en')
formatter9.format(1, 'day')
formatter9.format(2, 'day')
formatter9.format(-1, 'day')
formatter9.format(-2, 'day')
const formatter10 = new Intl.RelativeTimeFormat('en', { numeric: 'auto' })
formatter10.format(1, 'day')
formatter10.format(2, 'day')
formatter10.format(-1, 'day')
formatter10.format(-2, 'day')
const formatter11 = new Intl.RelativeTimeFormat('ko')
formatter11.format(1, 'day')
formatter11.format(2, 'day')
formatter11.format(-1, 'day')
formatter11.format(-2, 'day')
const formatter12 = new Intl.RelativeTimeFormat('ko', { numeric: 'auto' })
formatter12.format(1, 'day')
formatter12.format(2, 'day')
formatter12.format(-1, 'day')
formatter12.format(-2, 'day')
const formatter13 = new Intl.RelativeTimeFormat('ko', { numeric: 'auto' })
formatter13.format(1, 'years')
formatter13.format(1, 'quarters')
formatter13.format(1, 'months')
formatter13.format(1, 'weeks')
formatter13.format(1, 'days')
formatter13.format(1, 'hours')
formatter13.format(2, 'minutes')
formatter13.format(2, 'second')
const formatter14 = new Intl.RelativeTimeFormat('ko', { numeric: 'auto' })
const christmasD_Day = () => {
const today = new Date()
const started = new Date(2022, 12, 25)
const daysPassed = Math.ceil((today - started) / (1000 * 60 * 60 * 24))
return `크리스마스 까지 남은 날: ${formatter14.format(daysPassed, 'day')}`
}
christmasD_Day()
🌱4. 날짜/시간 형식
- 날짜/시간을 포맷팅해 보겠습니다.
- Intl.DateTimeFormat은 언어에 맞는 날짜 및 시간 서식을 적용하기 위한 객체입니다.
const date = new Date(2022, 12, 25)
date.toString()
new Intl.DateTimeFormat('en-US').format(date)
new Intl.DateTimeFormat('ko').format(date)
new Intl.DateTimeFormat('zh').format(date)
date.toLocaleDateString()
date.toLocaleDateString('ko')
date.toLocaleDateString('en-US')
date.toLocaleDateString('zh')
date.toLocaleDateString('ko', {
dateStyle: 'full',
})
date.toLocaleDateString('en', {
dateStyle: 'full',
})
date.toLocaleDateString('ko', {
minute: 'numeric',
})
date.toLocaleDateString('ko', {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
})
date.toLocaleDateString('ko', {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
weekday: 'long',
})
date.toLocaleDateString('ko', {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
weekday: 'short',
})
🌱나가면서
- 지금까지 숫자, 가격, 시간, 날짜 서식을 간결하게 적용하는 방법에 대해서 알아보았습니다.
- 형식을 일일이 조정하려면 번거로운 작업을 해야하는 경우가 많습니다. 하지만, 자바스크립트 내장객체를 이용해서 쉽고 간편한 방법으로 특정 형식 지정을 할 수 있습니다.
- 국가별 서식 지정이나, 옵션별로 서식을 다르게 설정하는 방법은 아래 참고중에 공식문서를 확인해 보시면 좋습니다.
🌱참고
'새싹DT 기업연계형 프론트엔드 실무 프로젝트 과정 7주차 블로그 포스팅'