2013-10-27 33 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);