如何在 JavaScript 中获取客户端时区



谁能写一个函数来获取客户端 时区,返回值如:EDT EST IST

toTimeString()方法给出时区名称的时间,请尝试以下...

var d=new Date();
var n=d.toTimeString();     
ouput
03:41:07 GMT+0800 (PHT) or 09:43:01 EDT 

演示

检查:使用 JavaScript 自动检测时区

下载 jstz.min.js 并向您的 HTML 页面添加一个函数

    <script language="javascript">
        function getTimezoneName() {
            timezone = jstz.determine_timezone()
            return timezone.name();
        }
    </script>
使用 Date()

.getTimezoneOffset() 函数,然后从此 URL timeanddate 构建一个哈希表,以将其与 timeanddate 相关联(如果要使用时区值)。

如果查看调用 Date 对象的 toString 方法的结果,将得到类似于"2012 年 4 月 24 日星期二 23:30:54 GMT+1000(澳大利亚东部标准时间)"的值。这将取决于您的系统区域设置设置。

从那里,您可以匹配括号中的每个大写字母。

var paren = new Date().toString().match(/(.+)/);
return paren ? paren[0].match(/([A-Z])/g).join("") : "";

问题是并非每个浏览器都会包含括号值。

如果你使用已知的Java插件来定位Firefox,你也可以利用Javascript中的java对象,根据名称(例如。"美国/Los_Angeles"),然后调用getDisplayName方法给你名字。

使用 jstz 获取时区名称:

jstz.determine().name();

它返回时区名称(如'America/New York'),然后您可以将其与moment.js等一起使用。

偏移量(例如来自 js Date 对象的偏移量)是不够的,因为它不携带额外的 DST 信息(您不知道是否需要为夏令时调整时间以及何时调整)。

  • 在 JavaScript 中获取客户端时区
  • 输出从 -12 : +12
  • 您可以通过更改此行的输出来修改输出 -Math.round(a/60)+':'+-(a%60); 喜欢-Math.round(a/60); 你得到//+2

    var a = new Date().getTimezoneOffset();
    var res = -Math.round(a/60)+':'+-(a%60);
    res = res < 0 ?res : '+'+res;
    console.log(res);
    

参考

如果您不介意获取全名,请尝试以下操作:

let timeZone = Intl.DateTimeFormat().solveOptions().timeZone; 像"美国/芝加哥"

(哦,你11年前问过。我的坏。;-)

这是

获得国家/地区完整时区的完美答案-

var a = new Date($.now());     
var regExp = /(([^)]+))/;`enter code here`
var matches = regExp.exec(a);
alert(matches[1]);   

此警报将为您提供输出,如印度标准时间,美国标准时间,非洲标准时间:

//$("#timezone option:contains(" + matches[1] + ")").attr('selected', 'selected');

相关内容

  • 没有找到相关文章

最新更新