带有多个变量的Javascript简单数学

带有多个变量的Javascript简单数学,javascript,math,variables,Javascript,Math,Variables,我希望有人能在这里帮助我,我对JS没有太多的线索,所以手头的任务变得不成比例 我有一个html表单,它有3个字段,其中2个应该是时间(如11:00、17:00、23:45等),一个是简单的数字 我一直在想办法解决这个问题 获取两次之间的差值(11:00-13:00) 将其转换为小数(如此多的小时,如:2、2.5、2.25等) 然后乘以第三个变量(17*2.5) 任何贡献,建议,链接将不胜感激 Csongor要计算时间,您需要创建新的日期对象,然后使用减法调用setTime() var dt =

我希望有人能在这里帮助我,我对JS没有太多的线索,所以手头的任务变得不成比例

我有一个html表单,它有3个字段,其中2个应该是时间(如11:00、17:00、23:45等),一个是简单的数字

我一直在想办法解决这个问题

  • 获取两次之间的差值(11:00-13:00)
  • 将其转换为小数(如此多的小时,如:2、2.5、2.25等)
  • 然后乘以第三个变量(17*2.5)
  • 任何贡献,建议,链接将不胜感激


    Csongor要计算时间,您需要创建新的日期对象,然后使用减法调用setTime()

    var dt = new Date('8/24/2009 11:00:00');
    var newHour = dt.getHours() + 2;
    dt.setTime(newHour, 0, 0, 0);
    

    要将分钟转换为十进制,只需除以60即可

    var dt1 = new Date('8/24/2009 11:20:00');
    var h = dt1.getHours();
    var m = dt1.getMinutes();
    
    h + (m/60) = 8.33
    

    因此,基本上,从实际日期对象开始,然后使用内置方法,如getHours()和getMinutes()进行数学/转换。一旦您拥有了真正的日期对象,这应该是小菜一碟。

    如果时间是指定的格式,您可以使用以下方法以分钟为单位获得差异:

    function diffMins(t0, t1) {
      t0 = t0.split(':');
      t1 = t1.split(':');
      return t1[0]*60 + +t1[1] - t0[0]*60 - +t0[1]
    }
    
    可使用以下方法将其转换为十进制小时:

    function minsToHours(mins) {
      return (mins/60).toFixed(2);
    }
    
    alert(minsToHours(diffMins('17:00', '23:45')));  // 6.75
    
    如果要获取日期对象的十进制小时数差异,请执行以下操作:

    function dateDiffInHours(d0, d1) {
      return ((d1 - d0) / 3.6e6).toFixed(2)
    } 
    
    alert( dateDiffInHours( new Date(2012,07,02,17), new Date(2012,07,02,23,45))); // 6.75 
    
    请注意,向日期对象传递字符串不是一个好主意。虽然大多数浏览器会解析一种或两种格式,但有些浏览器不会。ESCMA-262第3版中没有指定标准格式,日期字符串的解析完全依赖于实现。ES5指定了对ISO8601扩展格式的修改(例如,2012-07-02T23:45:00Z),但大部分正在使用的浏览器不支持它


    因此,始终自己解析字符串,或者根据ECMAScript规范使用参数调用构造函数。

    您尝试了什么?如果你什么也不尝试,我想你对javascript还是相当陌生的。如果是这样的话,谷歌是你的朋友,互联网上有很多关于javascript的优秀教程。Stack overflow不是为了复制一个教程,你可以通过在google上键入“learn javascript”在第一页的结果中找到它……看看你不应该期望Date函数正确解析一个非标准字符串,它工作的事实只是偶然的。在这种情况下,Date.parse依赖于实现。ES5(SO8601扩展格式的一个版本)中只指定了一个,ECMA-262第3版中没有指定。您答案中的特定字符串仅被世界人口的一小部分使用。@RobG-您可能是对的,但OP可能在这一小部分中。无论如何,为什么不从简单的事情开始呢。如果我在教别人开车,我不会一开始就把他们放在赛车上。我回答的重点是使用getHours和getMinutes等方法按时执行简单的数学运算,而不是如何在所有语言中正确解析日期/时间值。OP是否达到该百分比并不重要,重要的是OP开发的页面的访问者。从一开始就得到准确的信息要比以后再学习要好得多。非常感谢你,罗伯!我真的很感谢你的帮助!
    function dateDiffInHours(d0, d1) {
      return ((d1 - d0) / 3.6e6).toFixed(2)
    } 
    
    alert( dateDiffInHours( new Date(2012,07,02,17), new Date(2012,07,02,23,45))); // 6.75