【问题标题】:How to get Timezone by passing abbreviation?如何通过缩写获得时区?
【发布时间】:2019-02-08 05:10:35
【问题描述】:
我正在使用 Momentjs,到目前为止,我正在通过执行以下步骤获取日期和时间
var TimeZone = moment.tz("Asia/Kolkata").format('LLLL');
但我需要通过例如传递缩写来获取时间和日期
var TimeZone = moment.tz("IST").format('LLLL');
我怎样才能做到这一点?
【问题讨论】:
标签:
javascript
angularjs
momentjs
【解决方案1】:
我不知道 Momentjs,但我可以为你提供 JS 解决方案来做同样的事情。
正如我从你的问题中了解到的那样,“.tz”方法只接受完整的时区名称而不是短格式。所以你可以使用 JS 原型继承来实现这个结果。
你要做的就是用一个字典对象创建另一个你自己的方法,并用你的特性扩展“moment”对象。参考代码:
var tzMap = {
"IST" : "Asia/Kolkata",
"UST" : "America/LA" // this I only took for example i don't know it exist
or not
}
moment.__proto__.timezone = function(tzStr){
if(Object.hasOwnProperty(tzStr)){
tzStr = tzMap[tzStr];
}
return this.tz(tzStr);
}
// now instead of using
// moment.tz("Asia/Kolkata").format('LLLL');
// U can use
var TimeZone = moment.timezone("Asia/Kolkata").format('LLLL');
// or
var TimeZone = moment.timezone("IST").format('LLLL');