我想获取从我们的数据库输出的总小时数,但问题是这些值是字符串格式的
例如值:
9H:20M
3H:13M
3H:50M
6H:30M
TOTAL:22H:53M
我想得到所有值的总和并在之后显示它,但我不知道如何将数字从字符串中分离出来,然后将其转换为时间格式,有什么方法可以让我达到我的结果寻找使用 php 脚本进行值和数据的转换和分离?
我想获取从我们的数据库输出的总小时数,但问题是这些值是字符串格式的
例如值:
9H:20M
3H:13M
3H:50M
6H:30M
TOTAL:22H:53M
我想得到所有值的总和并在之后显示它,但我不知道如何将数字从字符串中分离出来,然后将其转换为时间格式,有什么方法可以让我达到我的结果寻找使用 php 脚本进行值和数据的转换和分离?
这是一个非常基本的解决方案:
<?php
$times = array("9H:20M", "3H:13M", "3H:50M", "6H:30M",);
$total = 0;
foreach ($times as $time) {
preg_match("#(\d+)H:(\d+)M#", $time, $matches);
$total += 60 * $matches[1] + $mtaches[2];
}
echo $total;
这将创建一个$total
包含总分钟数的值。现在您可以转换回 H 和 M。
您可以使用 strtotime 或较新的 DateTime 类,但是您当前的格式不兼容,因此您必须先进行一些修改。这是一个可能的解决方案:
<?php
$result = 0;
$times = array('9H:20M','3H:13M','3H:50M','6H:30M');
foreach($times as $time) {
preg_match('/^(\d{1,2})H[:]([0-5][0-9])M$/',$time, $m);
$timestamp = strtotime($m[1].':'.$m[2]);
$result+=$timestamp;
}
echo date('H:i',$result);
?>
我认为更好的方法是直接从数据库中获取总时间。