Javascript 如何使用momentjs获得3个字母的时区?

Javascript 如何使用momentjs获得3个字母的时区?,javascript,timezone,momentjs,timezone-offset,Javascript,Timezone,Momentjs,Timezone Offset,我使用矩库使用以下代码获取时区 console.log(moment.tz.names()) 这给了我以下格式的结果 0: "Africa/Abidjan" 1: "Africa/Accra" 2: "Africa/Addis_Ababa" 3: "Africa/Algiers" 4: "Africa/Asmara" 5: "Africa/Asmera" 6: "Africa/Bamako" 我只需要像这样的缩写 力矩可以提供这样的灵活性吗?我也需要得到补偿 谢谢你 您可以通过快速.map

我使用矩库使用以下代码获取时区

console.log(moment.tz.names())
这给了我以下格式的结果

0: "Africa/Abidjan"
1: "Africa/Accra"
2: "Africa/Addis_Ababa"
3: "Africa/Algiers"
4: "Africa/Asmara"
5: "Africa/Asmera"
6: "Africa/Bamako"
我只需要像这样的缩写

力矩可以提供这样的灵活性吗?我也需要得到补偿


谢谢你

您可以通过快速
.map()
,为从
矩.tz.names()
获得的完整区域名称生成一个伴随列表:

对于任何分区对象,
.zoneAbbr()
提供分区缩写

如果需要偏移量,可以调用
.utcOffset()

或者两者兼得:

let zoneInfo = moment.tz.names().map((z) => {
  let zone = moment.tz(z);
  return {
    abbr: zone.zoneAbbr(),
    offset: zone.utcOffset()
  };
});
您可以使用通过传递
z
参数来获取缩写:

moment.tz(zone).format('z')
moment.tz(zone).format('Z')
并通过传递
Z
参数进行偏移:

moment.tz(zone).format('z')
moment.tz(zone).format('Z')
console.log(
矩.tz.names().forEach(区域=>{
console.log(矩.tz(zone.format('Z'))
}) 
)


我收到以下错误
(索引):33未捕获类型错误:无法读取窗口中未定义的属性“名称”。onload((索引):33)
您能给我看一下小提琴吗?@教授您确定您同时导入了
矩.js
矩时区.js
?嗯,它正在工作。还有一个问题,我可以得到偏移量吗?@Profer是的,你可以做同样的事情,但是调用
.utcOffset()
而不是
.zoneabr()
。我会更新答案的。好的,非常感谢。我可以在“HH:mm”中得到偏移量吗?这是我根据
dst需要的最后一个偏移量。可以吗?因为在
dst
中减去一个小时/addedIt是dst感知的,并且在解析时将使用正确的偏移量。您好,在上述时区列表中,当我搜索时,est-utc差异是
-05:00
,它是
-04:00
。请您解释一下
moment.tz('US/Eastern')。format('Z')
实际上返回
-04:00
,而不是
-05:00