差异需要减去两次。没有得到我需要的结果

时间:2014-06-30 21:02:57

标签: php string time

我试过爆炸时间,在"之前和之后使用零件:"最小的成功。我通过XML Feed接收这两个时间,因此我可以根据需要转换我收到的字符串,或者将它们乘以另一个数字以便根据需要使用。

$time_1 = "00:59.8408";

$time_2 = "01:00.4734";

$difference = $time_2 - $time_1;

或另一种计算差异的方法,应该给我回复

0.6326

我很乐意接受任何建议。我已经尝试减去strtotime转换变量,我已经如上所述爆炸了不良结果的字符串。我相信,毫秒也是我过去没有用过的障碍。

感谢您阅读本文。

1 个答案:

答案 0 :(得分:1)

PHP中的减号运算符仅适用于数字。您的字符串将转换为数字,然后是1 - 0,因此差异为1:

$time_1 = "00:59.8408";

$time_2 = "01:00.4734";

$difference = $time_2 - $time_1;

var_dump($difference); # int(1)

而是编写一个函数,将字符串转换为秒,就像本例中的浮点数一样:

/**
 * convert time string to seconds
 *
 * @param string $time %i:%s.%u
 * @return float
 */
function time_to_seconds($time) {
    sscanf($time, '%d:%f', $minutes, $seconds);
    return $minutes * 60 + $seconds;
}

这很简单:首先扫描字符串中的数字,然后是冒号,然后是浮点数。由于第一个数字是分钟数,所以将它们乘以60并将秒数加上浮点数(一分钟为60秒)。返回结果(没有错误检查,请参阅sscanf将其转换为生产代码。

然后用结果进行操作:

$difference_in_seconds = time_to_seconds($time_2) - time_to_seconds($time_1);

var_dump($difference_in_seconds); # double(0.6326)

就是这样。最重要的部分是您需要知道如何处理字符串中编码的数据。根据那个解析字符串。