9

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

4

6 回答 6

11

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>
于 2012-04-24T13:29:12.847 回答
2

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

于 2012-04-24T13:31:04.740 回答
1

如果您查看调用toStringDate 对象的方法的结果,您将获得类似于“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,您还可以利用javaJavascript 中的对象根据名称(例如“America/Los_Angeles”)创建一个新的 TimeZone (java.util.TimeZone) 对象,然后调用getDisplayName方法给你的名字。

于 2012-04-24T13:36:10.547 回答
0

使用jstz获取时区名称:

jstz.determine().name();

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

一个偏移量(例如从一个 jsDate对象)是不够的,因为它不携带额外的 DST 信息(你不知道是否需要为夏令时调整时间以及何时)。

于 2017-01-10T22:47:42.400 回答
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);
    

参考

于 2017-08-28T10:42:00.477 回答
-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');
于 2017-10-18T15:15:49.083 回答