【问题标题】:Need to subtract two times for difference. Not getting results I need差值需要减去两次。没有得到我需要的结果
【发布时间】:2014-06-30 21:02:57
【问题描述】:

我已经尝试过让时代爆炸,在“:”之前和之后使用部分,但成功率最低。我两次都通过 XML 提要接收,因此我可以根据需要转换收到的字符串,或者将它们乘以另一个数字以根据需要使用。

$time_1 = "00:59.8408";

$time_2 = "01:00.4734";

$difference = $time_2 - $time_1;

或其他计算差异的方式,应该给我回来

0.6326

我很乐意接受任何建议。我试图减去 strtotime 转换的变量,正如我上面提到的那样,我用不利的结果爆炸了字符串。我相信,毫秒也是我过去没有遇到过的障碍。

感谢您阅读本文。

【问题讨论】:

  • 你是怎么爆炸的,把代码贴在这里,同时提到你面临的错误..

标签: php string time


【解决方案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)

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

【讨论】:

  • 这绝对是一个很好的解决方案。非常感激。我还在 number_format($difference_in_seconds, 4) 之后添加了我需要的正确精度。 +1
猜你喜欢
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-29
  • 2020-01-21
  • 2020-01-15
  • 1970-01-01
相关资源
最近更新 更多