javascript - 在 React js 中获取客户端本地时区
问题描述
我想获取客户端机器本地时区。
我尝试了 moment-timezone npm 包,使用以下命令
moment.tz().zoneAbbr()
但它给了我通用时区,即UTC,但我想要IST
谁能指导我如何获取客户端机器本地时区。
解决方案
如果您只想要时区偏移量,那非常简单:
const timezoneOffset = (new Date()).getTimezoneOffset();
console.log(timezoneOffset);
这将为您提供计算机设置的任何内容。
但是,如果您想知道实际的时区,那还不够,因为每个偏移量都有很多时区。
没有一种超级直接的方法可以很好地理解这一点。但是,您可以通过转换Date
为字符串并使用一点正则表达式来获取它:
const date = new Date();
const dateAsString = date.toString();
const timezone = dateAsString.match(/\(([^\)]+)\)$/)[1];
console.log(timezone);
这会给你一些像“东部夏令时间”(对我来说)。
如果要将其转换为缩写,则必须找到可能值的列表并创建一个映射函数:
const input = 'Eastern Daylight Time';
const tz = {
'Eastern Daylight Time': 'EDT',
// add more here
};
const toTZAbbreviation = input => tz[input];
console.log(toTZAbbreviation(input));
推荐阅读
- java - Redis Hget键值是否将哈希内容加载到主内存中
- git - GitHub 桌面授权失败
- azure - 如何将 Azure 应用配置与 .Net Framework 4.7.1 MVC 应用一起使用
- python - 在python中合并两个不同长度的列表并计算元素
- javascript - Javascript - 删除地图(对象)的最旧元素
- python - 如何像在管理面板操作中一样仅更新 Django 查询集中的选定记录?
- javascript - DrawerLayoutAndroid 不会打开反应原生
- c++ - C++ 事件系统 - 基于堆的事件触发
- mysql - Discord.py 欢迎消息无法从数据库中获取频道 ID
- python - 为什么 matplotlib savefig 不将轴标签和图形标题保存在与图形相同的白色背景下