我使用矩库使用以下代码获取时区
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"
我只需要缩写类似
矩可以提供这样的灵活性,我还需要补偿吗?
谢谢!
答案 0 :(得分:2)
您可以通过快速moment.tz.names()
生成从.map()
获得的完整区域名称的伴随列表:
let abbrs = moment.tz.names().map((z) => moment.tz(z).zoneAbbr());
对于任何区域对象,.zoneAbbr()
给出区域的缩写。
如果需要偏移量,可以调用.utcOffset()
:
let offsets = moment.tz.names().map((z) => moment.tz(z).utcOffset());
或同时获得两者:
let zoneInfo = moment.tz.names().map((z) => {
let zone = moment.tz(z);
return {
abbr: zone.zoneAbbr(),
offset: zone.utcOffset()
};
});
答案 1 :(得分:2)
您可以使用moment.format(string)通过传递z
参数来获得缩写:
moment.tz(zone).format('z')
,并通过传递Z
参数来补偿:
moment.tz(zone).format('Z')
console.log(
moment.tz.names().forEach(zone => {
console.log( moment.tz(zone).format('Z z') )
})
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.25/moment-timezone-with-data.min.js"></script>
请注意,z
格式标记不会总是显示缩写的时区名称,而是会显示每个区域的时间偏移,而对于moment#zoneAbbr
则会显示相同的内容。