Expo Localization と Intel.DateTimeFormat を使ってロケールに合わせた月の表記を取得する

日本だったら「1月」「2月」、アメリカだったら「Jan」「Feb」のような月の表記を取得するなら、これでOKです。

使いやすいように Map にしています。

numberMonthMap
import { getLocales } from 'expo-localization';

const languageTag = getLocales()[0].languageTag;
const options: Intl.DateTimeFormatOptions = { month: 'short', timeZone: 'UTC' };
export const numberMonthMap: { [key: number]: string } = {
  1: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 0, 1))),
  2: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 1, 1))),
  3: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 2, 1))),
  4: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 3, 1))),
  5: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 4, 1))),
  6: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 5, 1))),
  7: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 6, 1))),
  8: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 7, 1))),
  9: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 8, 1))),
  10: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 9, 1))),
  11: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 10, 1))),
  12: new Intl.DateTimeFormat(languageTag, options).format(new Date(Date.UTC(2020, 11, 1))),
};

// {"1": "1月", "10": "10月", "11": "11月", "12": "12月", "2": "2月", "3": "3月", "4": "4月", "5": "5月", "6": "6月", "7": "7月", "8": "8月", "9": "9月"}