【问题标题】:get minutes of float获得浮动分钟数
【发布时间】:2014-07-29 03:05:10
【问题描述】:

我在 php 中有这段代码

    $minutes = date("i", $time);
    $seconds = date("s", $time);
    $hours = date("H", $time);

    $toMinutes = ($hours*60) +  $minutes +  ($seconds/60);

    $KmPerHour = $distance / ($toMinutes/60); 

    $MperMin = ($distance*1000) / $toMinutes; 

    $KmPerMin = 1/($distance/$toMinutes); 

    $MperSec =  100/(($distance*1000)/($toMinutes*60)); 

除此行之外的所有作品

    $KmPerMin = 1/($distance/$toMinutes); 

基本计算跑1公里的时间(距离单位是公里) 但是例如

00:39:00 10 公里 > 39 分钟成绩 3.9 但应该是 3:54 分钟

如何将 3.9 转换为分钟?

【问题讨论】:

    标签: php time formula


    【解决方案1】:

    试试这样的:

    $min = 3.9;
    
    $min = floor($min) . ':' . ($min - floor($min)) * 60; //3:54
    

    See demo

    【讨论】:

    • 只是出于兴趣,你为什么用min%60而不是floor(min)?对于 60 或更高的值,这真的搞砸了。以 60.5 为例,它应该给你60:30,但给你0:3630 ??
    • 这很好@paxdiablo,谢谢。不知道我在想什么,或者为什么我忘记了地板。脑袋放屁。我已更新我的答案以反映您的建议。
    【解决方案2】:

    3.9 分钟 3 分 54 秒,因为十分之九分是五十四秒。

    使用整个部分 3 几分钟。

    将小数部分0.9 乘以60 得到秒数。

    以下PHP代码:

    $min = 3.9;
    
    $intmin = floor($min);
    $sec = ($min - $intmin) * 60;
    
    if ($sec < 10) {
        echo $intmin.':0'.$sec;
    } else {
        echo $intmin.':'.$sec;
    }
    

    将输出:

    3:54
    

    您甚至可以使用小数秒,例如将3.14159 分钟换成3:08.4954

    我也会提供处理时间的代码,但是,如果你跑一公里要花那么长时间,你可能想找到另一种锻炼方式:-)


    顺便说一句,KmPerMin 对你的计算有错误的意义,它应该更正确地称为MinPerKm

    【讨论】:

      【解决方案3】:

      这段代码可以帮助你

      <?php
          $KmPerMin = 3.9;
          $KmPerMin = intval($KmPerMin) + (intval(( ($KmPerMin - intval($KmPerMin))*100 * 60)/100)+1)/100;
          echo $KmPerMin; // shows 3.54
      ?>
      

      以 3:54 格式显示 $KmPerMin

      echo explode(".",$KmPerMin)[0] . ":" . explode(".",$KmPerMin)[1]; // shows 3:54
      

      【讨论】:

        猜你喜欢
        • 2019-08-29
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 1970-01-01
        • 2020-06-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多