2013-10-27 34 views
4

在我的代碼下面的行:Date.getTimezoneOffset返回一個非整數值

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

返回-120.14933013916015。

我期待的返回值將是120,並且一般來說,該值始終是一個整數。

任何人都可以解釋這一點嗎?現在看來,我需要對結果執行一輪操作。

+1

這是哪個瀏覽器? – kol

+1

這是否發生在所有瀏覽器上,並且在任何地方都可以重複使用? –

+0

IE10。它在辦公室的另一臺機器上重複。此外,它發生在不同的時區。 – galbarm

回答

0
var timezoneoffset  = new Date().getTimezoneOffset(); 
var timezoneoffsetinteger = parseInt(timezoneoffset); 

可變時間timezoneoffsetinteger將等於-120作爲整數。我猜你在GMT + 2?

如果你希望它是一個積極的GMT +和負爲GMT-那麼你需要做的:

var timezoneoffsetconvert = timezoneoffsetinteger * (-2)/2 

這將返回(爲GMT + 2(-120))120

+0

謝謝你的答案,但我知道我可以這樣做(正如我在問題中所述)。我試圖理解爲什麼我首先得到不正確的結果。 – galbarm

+0

getTimezoneOffset();得到當前的時區,然後計算出它需要做的事情來達到UTC,所以對於GMT + 2,它需要 - 2小時(120分鐘) – GeorgeTaylor

1

我嘗試了所有我能想到的事情,並且無法重現您報告的問題。

我能想到的唯一事情就是代碼中的其他內容正在修改Date原型。也許你正在使用一些你沒有告訴我們的日期/時間庫?

請嘗試在乾淨的空控制檯中重現問題。

  • 在地址欄
  • 按F12的開發工具
  • 轉到 「控制檯」 選項卡
  • 類型new Date().getTimezoneOffset()到控制檯類型about:blank

它還顯示小數嗎?

  • 如果是的話,那麼就在IE或Windows
  • 如果沒有,那麼一些在你的其他代碼是用Date原型碴的錯誤。
+0

感謝您的答案。我遵循你的指導原則,答案是否定的 - 輸出是一個整數。我將嘗試查找代碼中是否有修改Date類型的內容。 – galbarm

+0

你使用任何日期庫嗎? Moment.js,date.js,XDate或類似的? –

0

時區偏移量是UTC和本地時間差的結果,該值表示分鐘,如果該值爲負值,則偏移量在UTC之前,因此請記住這條簡單的代碼可以爲您提供按小時數表示的傳統偏移量。

var offset = (new Date().getTimezoneOffset()/-60);