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
/**\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这应该可以做到:
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)
| 归档时间: |
|
| 查看次数: |
2909 次 |
| 最近记录: |