如何在 Javascript 中获取浏览器的时区字符串
How to get the timezone string of the browser in Javascript?
我想在我的网站上显示用户时区的全名。例如:
Eastern Standard Time (North America)
Pacific Daylight Time (North America)
West Africa Time
如何在 Javascript 中执行此操作?我见过呈现如下内容的解决方案:America/New_York
.但这不是我真正想要的。
一行:
new window.Intl.DateTimeFormat().resolvedOptions().timeZone
您似乎要求在当前时间点以用户的当前语言对用户的当前时区进行人类可读的描述。
在大多数完全支持 ECMAScript 国际化 API 的现代浏览器和其他环境中,最好按如下方式提取:
// Get a specific point in time (here, the current date/time):
const d = new Date();
// Get a DateTimeFormat object for the user's current culture (via undefined)
// Ask specifically for the long-form of the time zone name in the options
const dtf = Intl.DateTimeFormat(undefined, {timeZoneName: 'long'});
// Format the date to parts, and pull out the value of the time zone name
const result = dtf.formatToParts(d).find((part) => part.type == 'timeZoneName').value;
例如,在冬季Windows上的Chrome 79浏览器中,它返回"太平洋标准时间"。 夏季的相同代码将返回"太平洋夏令时间"。 如果要反映在一年中的特定时间生效的时区说明,请在该特定时间创建Date
对象。
在不支持 Intl
API 的旧环境中,可以尝试从Date.toString
输出中提取部分时区名称,如下所示:
var s = new Date().toString().match(/'((.*)')/).pop();
这之所以有效,是因为 Date
对象上 toString
函数的输出留给实现来定义,并且许多实现碰巧在括号中提供时区,如下所示:
Sun Feb 21 2016 22:11:00 GMT-0800 (Pacific Standard Time)
如果您正在寻找一个通用名称,例如简单的"太平洋时间" - 对不起,这不可用。
一种方法是使用 momentJs 库。
http://momentjs.com/
首先在您的页面中安装/导入momentjs。 有了这个,你可以得到UTC的时间。现在,从UTC开始,您可以使用momentJS时区转换为客户端的本地时间或任何其他时区。
http://momentjs.com/timezone/
更新 2
抱歉,上述库暂时无法检测到时区。
我用了这个,它似乎对我有用。
<body>
<div id="testArea"></div>
<script type="text/javascript">
var counter = 1;
var interval = setInterval(function () {
document.getElementById('testArea').innerHTML = counter + ": " + jstz.determine().name() + "<br/>";
counter++;
}, 2000);
</script>
</body>
存储库在这里下载并尝试下载存储库后,将其提取并进入实用程序文件夹并打开 index.html.
:https://bitbucket.org/pellepim/jstimezonedetect/downloads
显示示例演示的页面如下所示:
http://pellepim.bitbucket.org/jstz/
- 如何模拟浏览器's时区
- 用javascript设置浏览器窗口的默认时区
- 在Protractor测试中设置浏览器时区
- 模拟浏览器和服务器之间的不同时区以进行本地测试
- 如何在 Javascript 中获取浏览器的时区字符串
- JavaScript 根据浏览器时区更改我的日期
- 通过javascript从浏览器获取奥尔森时区ID信息
- 如何保存JavaScript日期'从浏览器到服务器,再返回的时区
- 浏览器的时区差异
- 我可以通过Javascript在浏览器中设置本地时区吗
- 我可以用什么方法在所有浏览器中获取时区缩写
- 如何在js中为日期选择器而不是浏览器设置时区
- 在JSF中-获取客户端的区域设置(以浏览器的时区显示时间)
- 在MVC视图中使用JavaScript将UTC时间转换为客户端浏览器的时区
- 使用javascript / angularjs在客户端浏览器上修复自定义时区
- 强制浏览器以特定时区显示所有日期
- 不同浏览器的时区
- Ext JS:无论浏览器时区如何,都以UTC显示日期
- 如何使用phstc dateFormat转换为浏览器时区
- 如何获取浏览器时区和国家名称