Javascript Date.getTimezoneOffset返回一个非整数值

Javascript Date.getTimezoneOffset返回一个非整数值,javascript,timezone,dst,Javascript,Timezone,Dst,我的代码中的以下行: var timezoneoffset = new Date().getTimezoneOffset(); 返回-120.14933013916015 我希望返回值是120,一般来说,该值总是一个整数 有人能解释一下吗?现在看来我需要对结果进行一次循环运算 var timezoneoffset = new Date().getTimezoneOffset(); var timezoneoffsetinteger = parseInt(timezoneoffse

我的代码中的以下行:

var timezoneoffset = new Date().getTimezoneOffset();
返回-120.14933013916015

我希望返回值是120,一般来说,该值总是一个整数

有人能解释一下吗?现在看来我需要对结果进行一次循环运算

var timezoneoffset        = new Date().getTimezoneOffset();
var timezoneoffsetinteger = parseInt(timezoneoffset);
变量time ZoneOffsetInteger作为一个整数将等于-120。我猜你在GMT+2

如果您希望GMT+为正值,GMT为负值,则需要执行以下操作:

var timezoneoffsetconvert = timezoneoffsetinteger * (-2) / 2

这将返回(对于GMT+2(-120))120

我已经尝试了我能想到的一切,无法重现您报告的问题

我能想到的唯一一件事是,代码中的其他内容正在修改
日期
原型。也许您正在使用一些您没有告诉我们的日期/时间库

请尝试在干净的空控制台中重现该问题

  • 在URL栏中键入
    about:blank
  • 按F12键查看开发人员工具
  • 转到“控制台”选项卡
  • 在控制台中键入
    new Date()。getTimezoneOffset()
它还显示小数吗

  • 如果是,那么IE或Windows中有一个bug
  • 如果没有,那么您的其他代码中的某个内容与
    Date
    原型有冲突

时区偏移量是UTC和当地时间差的结果,该值表示分钟,如果该值为负值,则偏移量在UTC之前,请记住,这一简单的代码行可以为您提供以小时表示的传统偏移量

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

这是哪种浏览器?所有浏览器上都会出现这种情况吗?这在任何地方都可以重复吗?IE10。它在办公室的另一台机器上重复。而且,它发生在不同的时区。您的计算机设置为哪个时区?哪个版本的Windows?得到了类似的结果。UA:Mozilla/5.0(Windows NT 6.1;Win64;x64;rv:67.0)Gecko/20100101 Firefox/67.0。得到了TZ偏移量-179.999999956577而不是-180。谢谢你的回答,但我知道我可以做到(正如我在问题中所说的)。我试图理解为什么我首先会得到一个不正确的结果;获取当前时区,然后计算出到达UTC所需的操作,因此对于GMT+2,需要-2小时(120分钟),谢谢您的回答。我遵循了你的指南,答案是否定的——输出是一个整数。我将尝试查找代码中是否有修改日期类型的内容。您是否使用任何日期库?Moment.js、date.js、XDate或类似文件?