Tan*_*moy 12 timezone momentjs
我试图在节点js中使用时间 - 时区获取所有可用时区的列表,如下所示 -
var moment = require('moment-timezone');
var timeZones = moment.tz.names();
console.log(timeZones);
Run Code Online (Sandbox Code Playgroud)
我正在以这种格式获得时区 -
'Europe/Mariehamn',
'Europe/Minsk',
'Europe/Monaco',
'Europe/Moscow',
'Europe/Nicosia',
'Europe/Oslo',
'Europe/Paris',
'Europe/Podgorica',
'Europe/Prague',
'Europe/Riga',
'Europe/Rome',
Run Code Online (Sandbox Code Playgroud)
但我希望以这种格式获得时区 -
(GMT +01:00) Africa/Brazzaville
(GMT +01:00) Africa/Casablanca
(GMT +01:00) Africa/Douala
(GMT +01:00) Africa/El_Aaiun
(GMT +01:00) Africa/Kinshasa
(GMT +01:00) Africa/Lagos
(GMT +01:00) Africa/Libreville
(GMT +01:00) Africa/Luanda
(GMT +01:00) Africa/Malabo
(GMT +01:00) Africa/Ndjamena
(GMT +01:00) Africa/Niamey
Run Code Online (Sandbox Code Playgroud)
如何得到 ?
Shr*_*nee 13
没有直接的方法可以直接从中获取所需的格式moment-timezone.
尝试如下.
var moment = require('moment-timezone');
var timeZones = moment.tz.names();
var offsetTmz=[];
for(var i in timeZones)
{
offsetTmz.push(" (GMT"+moment.tz(timeZones[i]).format('Z')+")" + timeZones[i]);
}
Run Code Online (Sandbox Code Playgroud)
现在offsetTmz是您想要的格式的字符串数组.
这就是我的使用方式.
希望这会帮助你.
基于@Shrabanee 的回答和@Tenz 的评论 - 这是我使用 es6 模板文字的解决方案,并按 GMT + 数字而不是时区名称对列表进行排序:
timeZones = momentTimezone.tz.names();
let offsetTmz=[];
for(let i in timeZones)
{
offsetTmz.push(`(GMT${moment.tz(timeZones[i]).format('Z')}) ${timeZones[i]}`);
}
this.timeZoneNames = offsetTmz.sort();
Run Code Online (Sandbox Code Playgroud)
根据Erez Liberman 的答案和Matt Johnson 关于修剪列表的答案,我想将我的列表添加为完整的Typescript类,以相反的顺序对具有负偏移量的时区进行排序
import * as moment from 'moment-timezone';
export class TimezoneData {
tzName: string;
tzPresentationName: string;
}
export class TimezoneUtils {
public static getTimezonesNames(): TimezoneData[] {
const arr: TimezoneData[] = [];
const names = moment.tz.names();
for (const name of names) {
if ((name.indexOf('/') < 0 && name !== 'UTC') || name.startsWith('Etc/')) {
continue;
}
const data = new TimezoneData();
data.tzName = name;
data.tzPresentationName = moment.tz(name).format('Z');
arr.push(data);
}
arr.sort((a, b) => {
if (a.tzPresentationName === b.tzPresentationName) {
if (a.tzName === 'UTC') {
return -1;
}
return a.tzName === b.tzName ? 0 : (a.tzName > b.tzName ? 1 : -1);
}
const afc = a.tzPresentationName.charAt(0);
const bfc = b.tzPresentationName.charAt(0);
if (afc === '-') {
if (bfc === '+') {
return -1;
}
return a.tzPresentationName > b.tzPresentationName ? -1 : 1;
}
if (bfc === '-') {
return 1;
}
return a.tzPresentationName > b.tzPresentationName ? 1 : -1;
});
arr.forEach(a => a.tzPresentationName = `${a.tzName} (GMT ${a.tzPresentationName})`);
return arr;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8054 次 |
| 最近记录: |