【问题标题】:How to get clients Time zone in JavaScript?如何在 JavaScript 中获取客户端时区?
【发布时间】:2012-05-05 03:27:16
【问题描述】:

谁可以写一个函数来获取客户端时区,返回值如:EDTESTIST等等

【问题讨论】:

标签: javascript timezone


【解决方案1】:

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>

【讨论】:

    【解决方案2】:

    如果您想使用时区值,请使用 Date().getTimezoneOffset() 函数,然后从该 URL timeanddate 构建一个哈希表以将其关联。

    【讨论】:

      【解决方案3】:

      如果您查看调用 Date 对象的 toString 方法的结果,您将获得类似于“Tue Apr 24 2012 23:30:54 GMT+1000 (AUS Eastern Standard Time)”的值.这取决于您的系统区域设置。

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

      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方法给你起名字。

      【讨论】:

      • 不幸的是,当我使用 new Date().toString(); 时得到“Thu Sep 11 2014 11:29:07 GMT+1000 (EST)”在澳大利亚的 Chrome。由于美国东部标准时间时区 GMT-0400,这令人困惑。
      【解决方案4】:

      使用jstz 获取时区名称:

      jstz.determine().name();
      

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

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

      【讨论】:

        【解决方案5】:
        • 在 javascript 中获取客户端时区
        • -12 输出:+12
        • 您可以通过更改此行来修改输出-Math.round(a/60)+':'+-(a%60); Like -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

        【讨论】:

          【解决方案6】:

          这是获取国家/地区完整时区的完美答案-

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

          【讨论】:

          • 很抱歉,您答案中的链接看起来像是垃圾邮件
          猜你喜欢
          • 2013-07-05
          • 1970-01-01
          • 1970-01-01
          • 2015-01-29
          • 1970-01-01
          • 2013-05-24
          • 1970-01-01
          • 2019-09-18
          • 1970-01-01
          相关资源
          最近更新 更多