如何使用moment-timezone以长形式获取本地时区?

时间:2018-04-25 07:15:05

标签: javascript momentjs

我需要获取当前的当地时区如何获得?

我用过

moment.tz.guess(); // It gives "Asia/Calcutta"

但我需要India Standard Time

3 个答案:

答案 0 :(得分:0)

使用moment.tz.guess();,您只能获得zone name,但您正在寻找abbreviation timezone

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

  

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

文档中的

Check here了解更多信息。

以下是工作代码段,以便更好地理解:

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
<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>

答案 1 :(得分:0)

&#13;
&#13;
Dim conn as new ADODB.Connection()

' Set properties of connection string manually
conn.ConnectionString = "DRIVER = SOTAMAS90; UID=" & myInvestor.username & "; PWD=" & myInvestor.password & "; Company=ABC"

conn.Open()
&#13;
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);
&#13;
&#13;
&#13;

您需要为缩写定义所有全名。要获得更多格式,请检查doc

答案 2 :(得分:0)

当前日期&amp;印度时间

如果您想获得印度的当前日期和时间,请使用这些方法。

moment.tz(DATE, ZONE-NAME).format(FORMAT)

var indiaTime = moment.tz(moment(), 'Asia/Calcutta').format("YYYY-MM-DD HH:mm:ss");
console.log(indiaTime)

选中此pen

区域名称

moment.fn.getZoneName = function() {
  var abbr = this.zoneAbbr();
  var ist = zones.filter(function(z) {
    return z['Abbreviation'] === abbr
  })
  return ist[0]['Name']
};

var zone_name = moment.tz.guess();
var timezone = moment.tz(zone_name).getZoneName();
console.log(timezone);

zones是所有区域名称和缩写的数组。

选中此pen