将字符串转换为时间

时间:2016-11-21 11:12:51

标签: php time datetime-format data-conversion

我正在尝试将字符串转换为时间, 我拥有的字符串是这种格式, “1小时”,“1小时”,“2小时30分钟”,“3小时45分钟”

我想将它们转换为H:i:s格式。所以看起来如3:45:00

目前我正在使用str_pos在hr之前获取字符并将它们剥离并加入它们以形成h:i:s格式。

$data = strtolower($data);
$hours = '00';
$minutes = '00';
$seconds = '00';

$pos = strpos($data, "h");
if ($pos !== false) {
    $hours = str_replace([' ', ':', ','], '', substr($data, 0, $pos));
    $data = str_replace(['hours', 'hour', 'hrs', 'hr'], '', substr($data, $pos));
}

$pos = strpos($data, "m");
if ($pos !== false) {
    $minutes = str_replace([' ', ':', ','], '', substr($data, 0, $pos));
    $data = str_replace(['minutes', 'minute', 'mins', 'min'], '', substr($data, $pos));
}

$pos = strpos($data, "s");
if ($pos !== false) {
    $seconds = str_replace([' ', ':', ','], '', substr($data, 0, $pos));
}

return $hours . ':' . $minutes . ':' . $seconds;

类似于分钟......

任何更好,更简单的方法吗?无论如何我可以使用DateTime方法吗?

2 个答案:

答案 0 :(得分:1)

c

答案 1 :(得分:0)

使用正则表达式?

<?php
$s = "3 hr 45 minutes";

preg_match("#([0-9]+)[ hour]+ ([0-9]+)[ minutes]+#", $s, $m);

echo "$m[1]:$m[2]:00";

?>