2012-02-05 61 views

回答

7
<script type="text/javascript"> 

var d = new Date() 
var gmtHours = -d.getTimezoneOffset()/60; 
document.write("The local time zone is: GMT " + gmtHours); 

</script> 
27

瓦迪姆的答案可能會得到一些小數點後60分;並非所有偏移量都是60分鐘的完美倍數。下面是我使用的是什麼格式的值,ISO 8601的字符串:

function pad(value) { 
    return value < 10 ? '0' + value : value; 
} 
function createOffset(date) { 
    var sign = (date.getTimezoneOffset() > 0) ? "-" : "+"; 
    var offset = Math.abs(date.getTimezoneOffset()); 
    var hours = pad(Math.floor(offset/60)); 
    var minutes = pad(offset % 60); 
    return sign + hours + ":" + minutes; 
} 

這將返回象值 「+01:30」 或 「-05:00」。如果需要進行計算,可以從我的示例中提取數字值。

注意getTimezoneOffset()返回從UTC分鐘差的數量,從而使價值似乎是相反的(否定)的什麼是需要的格式,如ISO 8601。因此,爲什麼我用Math.abs()(這也與沒有得到負面幫助分鐘)以及我如何構建三元組。

3

高度推薦使用時間和日期相關的JavaScript代碼moment.js library

在這種情況下,你可以得到一個ISO 8601格式化UTC通過運行偏移:

> moment().format("Z") 
> "-08:00"