问题描述
我想获取客户端计算机的本地时区。
我使用以下命令尝试了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为您提供了一切准备。