我需要立即获取当前的本地时区如何获取?
我用过
moment.tz.guess(); // It gives "Asia/Calcutta"但我需要India Standard Time
发布于 2018-04-26 09:29:38
使用moment.tz.guess();,你只能得到zone name,但是你要找的是abbreviation of timezone。
为此,您需要使用zoneAbbr()并在您自己创建的abbrs的对象中找到它,因为moment-timezone不提供以下官方文档中所述的功能:
Moment.js还为长格式时区名称提供了一个挂钩。因为这些字符串通常是本地化的,所以Moment Timezone不为区域提供任何长名称。
有关详细信息,请参阅文档中的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>
发布于 2018-04-27 15:22:15
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);<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。
https://stackoverflow.com/questions/50016186
复制相似问题