首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用moment-timezone获取本地时区的长格式?

如何使用moment-timezone获取本地时区的长格式?
EN

Stack Overflow用户
提问于 2018-04-25 15:15:05
回答 2查看 1.5K关注 0票数 1

我需要立即获取当前的本地时区如何获取?

我用过

代码语言:javascript
复制
moment.tz.guess(); // It gives "Asia/Calcutta"

但我需要India Standard Time

EN

回答 2

Stack Overflow用户

发布于 2018-04-26 09:29:38

使用moment.tz.guess();,你只能得到zone name,但是你要找的是abbreviation of timezone

为此,您需要使用zoneAbbr()并在您自己创建的abbrs的对象中找到它,因为moment-timezone不提供以下官方文档中所述的功能:

Moment.js还为长格式时区名称提供了一个挂钩。因为这些字符串通常是本地化的,所以Moment Timezone不为区域提供任何长名称。

有关详细信息,请参阅文档中的Check here

为了更好地理解,下面是工作代码片段:

代码语言:javascript
复制
var zoneName = moment.tz.guess();
console.log(zoneName); // zone name

var timeZoneAbbreviation = moment.tz(zoneName).zoneAbbr()
console.log(timeZoneAbbreviation); // zone abbreviation

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',
  IST: 'Indian Standard Time',
  JST: 'Japan Standard Time'
};

// using pure JavaScript
var val;
Object.keys(abbrs).forEach(function(timeZoneAbbreviation) {
  val = abbrs[timeZoneAbbreviation];
});
console.log(val); // your expected result


// using lodash.js library
var getKey = function(obj, value) {
  return _.get(obj, value, false);
};

console.log(getKey(abbrs, timeZoneAbbreviation)); // your expected result
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

票数 0
EN

Stack Overflow用户

发布于 2018-04-27 15:22:15

代码语言:javascript
复制
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',
    IST : 'Indian Standard Time'
};

moment.fn.zoneName = function () {
    var abbr = this.zoneAbbr();
    return abbrs[abbr] || abbr;
};

var zone_name =  moment.tz.guess();
var timezone = moment.tz(zone_name).zoneName()
console.log(timezone);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.16/moment-timezone.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.16/moment-timezone-with-data.js"></script>

您需要定义缩写的所有全称。有关更多格式,请查看doc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50016186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档