2

luxon 库添加了这个特性来获取offsetNameLongacc。到时区 ianaName,它提供特定于语言环境的翻译区域名称。例如

DateTime.local().setLocale("en-US").setZone("America/Los_Angeles").offsetNameLong // prints Pacific Daylight Time
DateTime.local().setLocale("ja-JP").setZone("America/Los_Angeles").offsetNameLong // prints アメリカ太平洋夏時間

由于luxonIE 浏览器支持较少(除非使用 polyfills),我想使用moment-timezone. 我只是好奇是否moment-timezone提供了类似的功能来做同样的事情,或者,实现这个功能的任何其他替代方案。

4

1 回答 1

2

看起来 moment.js 不支持时区的长名称,但提供了一种自定义方式来使用长名称而不是zoneAbbr()返回的缩写。

参考https ://momentjs.com/timezone/docs/#/using-timezones/formatting/

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
于 2020-08-24T06:16:06.240 回答