如何使用 Intl 在 javascript 中获取月份名称列表

mar*_*ark 5 javascript localization internationalization

如何使用ECMAScript 国际化 API获取所有长月份名称的列表?

例如,如果用户的语言环境是en-US,我想得到以下信息:

["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
Run Code Online (Sandbox Code Playgroud)

fit*_*rec 14

我在 2021 年使用 es6 语法的解决方案

\n

\r\n
\r\n
/**\n * Return list of months\n *  localeName   : name of local, f.e. en-GB, default es-MX\n *  \xe2\x9c\x85 monthFormat : short, numeric, long (Default)\n */\nfunction monthsForLocale(localeName = \'es-MX\', monthFormat = \'long\') {\n  const format = new Intl\n     .DateTimeFormat(localeName, {month: monthFormat}).format;\n  return [...Array(12).keys()]\n    .map((m) => format(new Date(Date.UTC(2021, (m+1)%12))));\n}\n\n\n//  Testing:\n\n// [\'enero\', ..., \'noviembre\',\'diciembre\' ]\nconsole.log(monthsForLocale());\n\n// [\'1\', \'2\',  \'3\', \'4\',  \'5\', \'6\',  \'7\', \'8\',  \'9\', \'10\', \'11\', \'12\']\nconsole.log(monthsForLocale(\'en-GB\', \'numeric\'));\n\n// [\'Jan\', \'Feb\',\'Mar\', \'Apr\', \'May\',\'Jun\', \'Jul\', \'Aug\',\'Sep\', \'Oct\', \'Nov\',\'Dec\' ]    \nconsole.log(monthsForLocale(\'en-GB\', \'short\'));\n\n// [\'1\xe6\x9c\x88\',  \'2\xe6\x9c\x88\', \'3\xe6\x9c\x88\',  \'4\xe6\x9c\x88\',  \'5\xe6\x9c\x88\',\'6\xe6\x9c\x88\',  \'7\xe6\x9c\x88\',  \'8\xe6\x9c\x88\',\'9\xe6\x9c\x88\',  \'10\xe6\x9c\x88\', \'11\xe6\x9c\x88\', \'12\xe6\x9c\x88\']\nconsole.log(monthsForLocale(\'ja-JP\', \'short\'));
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n


Joh*_*ore 6

这应该可以做到:

function getMonthsForLocale(locale) {
    var format = new Intl.DateTimeFormat(locale, { month: 'long' })
    var months = []
    for (var month = 0; month < 12; month++) {
        var testDate = new Date(Date.UTC(2000, month, 1, 0, 0, 0));
        months.push(format.format(testDate))
    }
    return months;
}
Run Code Online (Sandbox Code Playgroud)