在React js中获取客户端本地时区

问题描述

我想获取客户端计算机的本地时区。

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

moment.tz().zoneAbbr()

但这给了我世界时区,即UTC,但是我想要IST

有人可以指导我如何获取客户端计算机的本地时区。

解决方法

Intl.DateTimeFormat().resolvedOptions().timeZone 将返回客户端的时区,可用于 JavaScript,而不仅仅是 React。

,

如果只需要时区偏移,那就很简单了:

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

,

新的Date()为您提供了机器时区,而无需npm程序包即可获取本地时区JavaScript为您提供了一切准备。