首页 > 解决方案 > 在 React js 中获取客户端本地时区

问题描述

我想获取客户端机器本地时区。

我尝试了 moment-timezone npm 包,使用以下命令

moment.tz().zoneAbbr()

但它给了我通用时区,即UTC,但我想要IST

谁能指导我如何获取客户端机器本地时区。

标签: javascriptmoment-timezone

解决方案


如果您只想要时区偏移量,那非常简单:

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


推荐阅读