如何获得客户端时区

时间:2013-07-08 06:45:47

标签: javascript

我想存储将要使用我的门户网站的timezone of client (visitor)。 你能告诉我找出timezone for client machine using JAVAScript代码的方法......

I need the GMT offset hours like `(GMT +5:30)`.

4 个答案:

答案 0 :(得分:8)

这可能是查找客户端本地时间/偏移的更好方法

function pad(number, length){
    var str = "" + number;
    while (str.length < length) {
        str = '0'+str;
    }
    return str;
}
var offset = new Date().getTimezoneOffset();

offset = ((offset<0? '+':'-')+ pad(parseInt(Math.abs(offset/60)), 2)+":"+pad(Math.abs(offset%60), 2));
alert(offset);

输出类似于= +05:30

答案 1 :(得分:3)

var OffSetMinute = new Date().getTimezoneOffset();

OffSetMinute var将给出UTC与本地时间之间的分钟差异。如果本地时区落后于UTC,则偏移为正,如果前置,则偏移为负。

正如@Guillaume在评论中所述,上述方法已被删除,因此您可以使用以下

  private static final Calendar cal =   new Calendar();
    private static final int LOCALTIMEZONEOFFSET = (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)) / (60*1000); 

Calendar.ZONE_OFFSET为您提供UTC的标准偏移量(以msecs为单位)。这与DST不会改变。 (节日照明)

Calendar.DST_OFFSET为您提供当前的DST偏移量(以msecs为单位) - 如果有的话。例如,在夏季,在使用DST的国家/地区,此字段可能包含value +1 hour (1000*60*60 msecs)

所以只需ADD int LOCALTIMEZONEOFFSET价值(如果为正)或substarct价值(如果您的值为负)进入您的UTC Time并且会给您客户机器的时间

答案 2 :(得分:2)

function getTimezone() {
    var u = new Date().toString().match(/([-\+][0-9]+)\s/)[1];
    return u.substring(0, 3) + ':' + u.substring(3, u.length);
}

答案 3 :(得分:1)

适用于我的代码...

<script type="text/javascript" language="javascript" >
    function fnLoad()
    { 
        var objLocalZone = new Date();
        var strLocalZone=''+objLocalZone; 

        var mySplitResult = strLocalZone.split(" ");

        var newLocalZone = mySplitResult[5].slice(0,mySplitResult[5].length-2) +':'+mySplitResult[5].slice(mySplitResult[5].length-2,mySplitResult[5].length);
        document.getElementById("hdnTimeZone").value = newLocalZone;
        //alert('Length : '+newLocalZone);
    }
</script>

隐藏输入

<input type="hidden" id="hdnTimeZone" name="hdnTimeZone"/>

我不知道这是获取客户(访客)时区的正确方法。但它对我来说很好。如果有人有最佳解决方案,请告诉我。感谢...