将字符串转换为时间
Convert String to Time
我正在尝试将字符串转换为时间,
我的字符串是这种格式,
“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 方法吗?
使用正则表达式 ?
<?php
$s = "3 hr 45 minutes";
preg_match("#([0-9]+)[ hour]+ ([0-9]+)[ minutes]+#", $s, $m);
echo "$m[1]:$m[2]:00";
?>
$time = str_replace(['hr', 'mins'], ['hours', 'minutes'], $string);
$dateTime = new DateTime('midnight');
$dateTime->modify('+' . $time);
var_dump($dateTime->format('H:i:s'));
我正在尝试将字符串转换为时间, 我的字符串是这种格式, “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 方法吗?
使用正则表达式 ?
<?php
$s = "3 hr 45 minutes";
preg_match("#([0-9]+)[ hour]+ ([0-9]+)[ minutes]+#", $s, $m);
echo "$m[1]:$m[2]:00";
?>
$time = str_replace(['hr', 'mins'], ['hours', 'minutes'], $string);
$dateTime = new DateTime('midnight');
$dateTime->modify('+' . $time);
var_dump($dateTime->format('H:i:s'));