4

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

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

4 回答 4

5

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

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

于 2014-03-14T06:17:55.490 回答
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。这不会随着夏令时而改变。(夏令时)

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

所以只要ADD int LOCALTIMEZONEOFFSET价值(如果是正数)或substarct价值(如果你的价值是负数)进入你的UTC Time,那会给你客户端机器的时间。

于 2013-07-08T06:50:02.473 回答
2
function getTimezone() {
    var u = new Date().toString().match(/([-\+][0-9]+)\s/)[1];
    return u.substring(0, 3) + ':' + u.substring(3, u.length);
}
于 2013-11-11T04:20:29.900 回答
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"/>

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

于 2013-07-08T11:29:32.390 回答