2017-04-08 167 views
1

我试图将时间格式00:00:00转换为十进制0.00将MysQl时间转换为十进制格式

我尝试这样做:

<?php 
    $hourswork_wk1 = $deposit26['hours_worked']; 
    $decimalHourswk1 = decimalHours($hourswork_wk1); 
    decimalHours(); 

    function decimalHours($timewk1) 
    { 
     $hourswork_wk1 = explode(":", $timewk1); 
     return ($hourswork_wk1[0] + ($hourswork_wk1[1]/60) + ($hourswork_wk1[2]/3600)); 
     echo $decimalHours 
    } 


;?> 

编辑

<?php 
    $hourswork_wk1 = $deposit26['hours_worked']; 
    $decimalHourswk1 = decimalHours($hourswork_wk1); 

    function decimalHours($timewk1) 
    { 
     $hourswork_wk1 = explode(":", $timewk1); 
     return ($hourswork_wk1[0] + ($hourswork_wk1[1]/60) + ($hourswork_wk1[2]/3600)); 

    } 
?> 

我得到未定义功能decimalHours()的调用错误。我究竟做错了什么?

+0

把'echo'后'return'是没有意义的。 'return'语句结束函数。 – Barmar

+0

您在'decimalHours()'后面缺少';'' – Barmar

+0

为什么您有'decimalHours()'这一行?它什么都不做,而且它是无效的语法。 – Barmar

回答

0

好吧,由于某些原因,我写的代码从来没有为我工作过。所以在四处寻找更有形的东西之后,我偶然发现了Philip Norton code,它像一个动态变量的魅力一样工作。你自便。

脚本

<?php 
//$week1hours = $deposit26['hours_worked']; 
$week1hours = "14:33:38"; 
function time_to_decimal($time) { 
    $timeArr = explode(':', $time); 
    $decTime = ($timeArr[0] + ($timeArr[1]/60) + ($timeArr[2]/3600)); 
    return $decTime; 
} 
echo time_to_decimal($week1hours); 
?> 

结果

14.560555555556 

奖金:限2位小数

使用轮只拿到2位小数

<?php 
//$week1hours = $deposit26['hours_worked']; 
$week1hours = "14:33:38"; 
function time_to_decimal($time) { 
    $timeArr = explode(':', $time); 
    $decTime = ($timeArr[0] + ($timeArr[1]/60) + ($timeArr[2]/3600)); 
    return $decTime; 
} 
$totalhours= time_to_decimal($week1hours); 
echo round($totalhours, 2); 
?> 

结果

14.56 
+0

除了函数的名称之外,有什么区别? – Barmar

+0

@Barmar:我很困惑,我不知道。我希望我能告诉。 –

+0

也许Netbeans在定义它之前不喜欢你调用一个函数? PHP本身对此没有任何问题。 – Barmar

相关问题