在 React js 中获取客户端本地时区
Get client local timezone in React js
我想获取客户端计算机本地时区。
我使用以下命令尝试了 moment-timezone npm 包
moment.tz().zoneAbbr()
但它给了我通用时区,即 UTC,但我想要 IST[=11=]
谁能指导我如何获取客户端计算机本地时区。
新的 Date() 为您提供机器时区,无需 npm 包即可获取本地时区 JavaScript 为您做好准备。
如果您只想要时区偏移量,这非常简单:
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));
Intl.DateTimeFormat().resolvedOptions().timeZone
将 return 客户端的时区,并且可用于 JavaScript,而不仅仅是 React。
const { timeZone } = Intl.DateTimeFormat().resolvedOptions();
console.log(timeZone);
> "America/New_York"
为@samanime 的回答添加一些额外的信息。
你将从这里得到时区
const dateAsString = date.toString();
const timezone = dateAsString.match(/\(([^\)]+)\)$/)[1];
console.log("timezone", timezone);
现在,如果您想获取时区的缩写或缩写形式,如 IST、GMT 等,只需选择时区字符串的第一个字母即可。
var matches = timezone.match(/\b(\w)/g);
var abbreviations = matches.join('');
console.log("abbreviations", abbreviations);
例如:-
时区:印度标准时间
缩写:IST
我想获取客户端计算机本地时区。
我使用以下命令尝试了 moment-timezone npm 包
moment.tz().zoneAbbr()
但它给了我通用时区,即 UTC,但我想要 IST[=11=]
谁能指导我如何获取客户端计算机本地时区。
新的 Date() 为您提供机器时区,无需 npm 包即可获取本地时区 JavaScript 为您做好准备。
如果您只想要时区偏移量,这非常简单:
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));
Intl.DateTimeFormat().resolvedOptions().timeZone
将 return 客户端的时区,并且可用于 JavaScript,而不仅仅是 React。
const { timeZone } = Intl.DateTimeFormat().resolvedOptions();
console.log(timeZone);
> "America/New_York"
为@samanime 的回答添加一些额外的信息。
你将从这里得到时区
const dateAsString = date.toString();
const timezone = dateAsString.match(/\(([^\)]+)\)$/)[1];
console.log("timezone", timezone);
现在,如果您想获取时区的缩写或缩写形式,如 IST、GMT 等,只需选择时区字符串的第一个字母即可。
var matches = timezone.match(/\b(\w)/g);
var abbreviations = matches.join('');
console.log("abbreviations", abbreviations);
例如:-
时区:印度标准时间
缩写:IST