gpb*_*pbl 6 javascript internationalization ecmascript-intl
我想在我的i18n-ed应用程序中显示7个工作日的列表:
Sunday, Monday, Tuesday... Saturday
我靠上国际全局对象格式化的日期/时间,但我无法找到一个简单的方法来获得唯一的工作日名称.
我想我可以在EPOCH时间增加一些时间,以达到一周的第一天,但我没有在工作日找到格式化器打印.
var date = new Date(0);
date.setDate(4 + day);
for (var i = 0; i < 7; i++) {
  var weekday = new Intl.DateTimeFormat(["en"], {
      weekday: "short" // ?? what should I put here
  }).format(date);
  console.log(weekday);
}
输出:
Sunday, January 4, 1970
Monday, January 5, 1970
Tuesday, January 6, 1970
Wednesday, January 7, 1970
Thursday, January 8, 1970
Friday, January 9, 1970
Saturday, January 10, 1970
期望的输出:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
我也希望有一个较短版本的日子,比如Sun, Mon, Tue....
或者,有没有办法从工作日字符串Intl?我试图通过控制台探索对象,但我找不到它们.
fit*_*rec 12
/**\n * Return list of days\n *  localeName : name of local, f.e. en-GB, default es-MX\n * \xe2\x9c\x85 weekday    : format of weekday short/long (Default)\n */\nfunction daysForLocale(localeName = \'es-MX\', weekday = \'long\') {\n  const {format} = new Intl.DateTimeFormat(localeName, { weekday });\n  return [...Array(7).keys()]\n    .map((day) => format(new Date(Date.UTC(2021, 5, day))));\n}\n\n// ##############################################################\n// testing daysForLocale function\n// ##############################################################\nconsole.log(daysForLocale());\n// [\'domingo\',\'lunes\',...,\'viernes\',\'s\xc3\xa1bado\']\nconsole.log(daysForLocale(\'en-GB\', \'short\'));\n// [\'Sun\', \'Mon\', \'Tue\', \'Wed\', \'Thu\', \'Fri\',\'Sat\']\nconsole.log(daysForLocale(\'ja-JP\', \'short\'));\n// [\'\xe6\x97\xa5\', \'\xe6\x9c\x88\', \'\xe7\x81\xab\',\'\xe6\xb0\xb4\', \'\xe6\x9c\xa8\', \'\xe9\x87\x91\',\'\xe5\x9c\x9f\'] const weekdayDateMap = {
  Mon: new Date('2020-01-06T00:00:00.000Z'),
  Tue: new Date('2020-01-07T00:00:00.000Z'),
  Wed: new Date('2020-01-08T00:00:00.000Z'),
  Thu: new Date('2020-01-09T00:00:00.000Z'),
  Fri: new Date('2020-01-10T00:00:00.000Z'),
  Sat: new Date('2020-01-11T00:00:00.000Z'),
  Sun: new Date('2020-01-12T00:00:00.000Z'),
};
const shortWeekdays = Object.keys(weekdayDateMap);
const getDayOfWeek = (shortName, locale = 'en-US', length = 'short') =>
  new Intl.DateTimeFormat(locale, { weekday: length }).format(weekdayDateMap[shortName]);
const getDaysOfWeek = (locale = 'en-US', length = 'short') =>
  shortWeekdays.map(shortName => getDayOfWeek(shortName, locale, length));
console.log(getDayOfWeek('Mon', 'de-DE')) // "Mo"
console.log(getDaysOfWeek('de-DE')) // ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"]笔记:
如果您Intl.DateTimeFormat每秒多次调用格式化程序,则创建一次格式化程序并重新使用它会更有效。