在C#中,你可以使用如何獲得UTC在javascript(在C#TimeZoneInfo.GetUtcOffset模擬)偏移
System.TimeZone.CurrentTimeZone.GetUtcOffset(someDate).Hours
但我怎麼能獲得UTC的時間偏移在JavaScript中的特定日期(Date對象) ?
在C#中,你可以使用如何獲得UTC在javascript(在C#TimeZoneInfo.GetUtcOffset模擬)偏移
System.TimeZone.CurrentTimeZone.GetUtcOffset(someDate).Hours
但我怎麼能獲得UTC的時間偏移在JavaScript中的特定日期(Date對象) ?
<script type="text/javascript">
var d = new Date()
var gmtHours = -d.getTimezoneOffset()/60;
document.write("The local time zone is: GMT " + gmtHours);
</script>
瓦迪姆的答案可能會得到一些小數點後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()
(這也與沒有得到負面幫助分鐘)以及我如何構建三元組。
我高度推薦使用時間和日期相關的JavaScript代碼moment.js library。
在這種情況下,你可以得到一個ISO 8601格式化UTC通過運行偏移:
> moment().format("Z")
> "-08:00"
http://www.electrictoolbox.com/javascript-get-timezone-offset/? – ken2k 2012-02-05 13:24:34
您的C#代碼中的偏移量不是整小時的倍數。 – CodesInChaos 2012-02-05 13:30:54