Есть ли какая-либо встроенная функция в момент / момент-часовой пояс для преобразования из названия часового пояса в «читаемый человеком формат»? - PullRequest
0 голосов
/ 30 октября 2019

Возьмите в качестве примера следующий минимальный воспроизводимый пример проекта, над которым я работаю, где я получаю имя часового пояса, и мне нужно преобразовать его в "читаемый человеком формат".

т.е.:

  • вход: America/Los_Angeles
  • вывод: America Los Angeles

Я сейчас, вы можете рассмотреть«America / Los_Angeles» уже «читается человеком», и я согласен, но мое требование состоит в том, чтобы преобразовать его в упомянутый формат (или аналогичный, без учета косой черты, подчеркивания и т. Д.).

Кроме того,это может быть легко достигнуто с помощью регулярного выражения, но поскольку момент и момент часовой пояс используются как часть проекта .... Интересно, есть ли способ добитьсяэто использует какой-либо встроенный механизм, предоставленный любой из этих библиотек?


import 'moment-timezone';
import * as moment from 'moment';

const tz = moment.tz.zone("America/Los_Angeles");

const result = tz.name;

console.log(result);  // America/Los_Angeles, need "America Los Angeles"

Если это поможет, то это в проекте Angular.

1 Ответ

1 голос
/ 30 октября 2019

Об этом говорится в документах по форматированию :

Moment.js также предоставляет ловушку для длинного имени часового пояса формы. Поскольку эти строки обычно локализованы, часовой пояс Moment не предоставляет полных имен зон.

Чтобы предоставить полные имена форм, вы можете переопределить moment.fn.zoneName и использовать маркер zz.

var abbrs = {
    EST : 'Eastern Standard Time',
    EDT : 'Eastern Daylight Time',
    CST : 'Central Standard Time',
    CDT : 'Central Daylight Time',
    MST : 'Mountain Standard Time',
    MDT : 'Mountain Daylight Time',
    PST : 'Pacific Standard Time',
    PDT : 'Pacific Daylight Time',
};

moment.fn.zoneName = function () {
    var abbr = this.zoneAbbr();
    return abbrs[abbr] || abbr;
};

moment.tz([2012, 0], 'America/New_York').format('zz');    // Eastern Standard Time
moment.tz([2012, 5], 'America/New_York').format('zz');    // Eastern Daylight Time
moment.tz([2012, 0], 'America/Los_Angeles').format('zz'); // Pacific Standard Time
moment.tz([2012, 5], 'America/Los_Angeles').format('zz'); // Pacific Daylight Time
...