如何使用moment-timezone获取长格式本地时区?及印度标准时区获取方法
嘿,针对你提出的两个moment-timezone相关问题,我整理了具体的解决方法:
关于moment-timezone获取本地时区的问题解答
1. 如何获取长格式的本地时区名称?
要拿到长格式的本地时区名称(比如"India Standard Time"这种),有两种简单的实现方式:
方法一:通过时区对象提取
先获取本地时区的标识符,再借助moment.tz.zone()拿到对应的时区对象,最后调用name(true)方法就能得到长格式名称(参数true指定返回长格式,传false会返回短格式缩写):
// 第一步:获取本地时区标识符 const localTimeZoneId = moment.tz.guess(); // 第二步:获取对应时区对象 const timeZone = moment.tz.zone(localTimeZoneId); // 第三步:提取长格式名称 const longTimeZoneName = timeZone.name(true); console.log(longTimeZoneName); // 对于Asia/Calcutta,会输出 "India Standard Time"
方法二:通过moment实例格式化输出
直接创建一个对应本地时区的moment实例,用format('zzzz')这个格式符就能直接输出长格式时区名称:
const longTimeZoneName = moment().tz(moment.tz.guess()).format('zzzz'); console.log(longTimeZoneName); // 同样会输出 "India Standard Time"
2. 如何将moment.tz.guess()得到的标识符转为友好时区名称?
你已经通过moment.tz.guess()拿到了"Asia/Calcutta",要转换成"印度标准时间"这种友好名称,其实就是上面两种方法的直接应用——把拿到的标识符传入对应的方法即可。
给你一个完整的示例:
// 获取时区标识符 const tzId = moment.tz.guess(); // 返回 "Asia/Calcutta" // 方法一:用时区对象获取 const tzZone = moment.tz.zone(tzId); console.log(tzZone.name(true)); // 输出 "India Standard Time" // 方法二:用格式化方法获取 console.log(moment().tz(tzId).format('zzzz')); // 同样输出 "India Standard Time"
小提醒:确保你已经正确引入了moment和moment-timezone库,如果需要覆盖更多时区,建议引入包含完整时区数据的版本(比如moment-timezone-with-data.js),避免出现时区信息缺失的问题。
内容的提问来源于stack exchange,提问作者Velkumar
相关产品推荐
相关产品推荐

