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

时间:2012-04-24 13:26:34

标签: javascript timezone

谁可以编写一个函数来获取客户时区,返回值如:EDT EST IST等等

6 个答案:

答案 0 :(得分:11)

toTimeString()方法用时区名称给出时间尝试下面...

var d=new Date();
var n=d.toTimeString();     

ouput

03:41:07 GMT+0800 (PHT) or 09:43:01 EDT 

Demo

检查: Automatic Timezone Detection Using JavaScript

下载jstz.min.js并将功能添加到您的html页面

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

答案 1 :(得分:2)

使用Date()。getTimezoneOffset()函数,然后根据此URL timeanddate构建一个哈希表,以便在需要使用时区值时将其关联起来。

答案 2 :(得分:1)

如果你看一下调用Date对象的toString方法的结果,你会得到一个类似于“Tue Apr 24 2012 23:30:54 GMT + 1000(AUS东部标准时间) )”。这取决于您的系统区域设置的设置。

从那里你可以匹配括号内的每个大写字母。

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

问题在于并非每个浏览器都包含带括号的值。

如果您使用已知的Java插件定位Firefox,您还可以利用Javascript中的java对象基于名称创建新的TimeZone(java.util.TimeZone)对象(例如“America” / Los_Angeles“),然后调用getDisplayName方法为您提供名称。

答案 3 :(得分:0)

使用jstz获取时区名称:

jstz.determine().name();

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

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

答案 4 :(得分:0)

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

reference

答案 5 :(得分:-1)

这是获得国家完整时区的完美答案 -

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