2

如何使用 php 将“1 小时 10 分钟”字符串转换为以下格式 01:10:00。这就是我所做的 -echo date('H:i:s',strtotime('1 hour and 10 min'));
输出是 -01:00:00

4

6 回答 6

4

假设始终存在hour and min(强调),您可以使用sscanf

$text = "1 hour 10 min";
list($hour, $min) = sscanf($text, "%d hour %d min");
echo 
   str_pad($hour, 2, '0', STR_PAD_LEFT) . ':' . 
   str_pad($min, 2, '0', STR_PAD_LEFT) . 
   ':00';
于 2012-05-16T09:58:31.227 回答
1
$time = '1 hour and 10 min';

$arr = explode( ' ', $time);

if ( count($arr) > 2) {
 echo date( 'H:i:s', strtotime($arr[0] . ':' . $arr[count($arr)-2]));
} else {
    echo $arr[1] == 'hour' ? date( 'H:i:s', strtotime($arr[0] . ':' . '00')):
    date( 'H:i:s', strtotime(00 . ':' . $arr[0]));
}
于 2012-05-16T09:54:53.067 回答
1
php > preg_match('/^(\d+)\shour[^\d]+(\d+)\smin.+$/i', '1 hour and 10 minutes', $matches);
php > echo str_pad($matches[1], 2, '0', STR_PAD_LEFT).':'.str_pad($matches[2], 2, '0', STR_PAD_LEFT).':00';
01:10:00
于 2012-05-16T09:59:34.410 回答
1

查看PHP 文档中 strtotime 函数的示例,似乎它可能and是导致您出现问题的词。

我不知道您的输入字符串来自哪里,但是否可以排除and(即只有1 hour 10 min)?

于 2012-05-16T10:36:49.460 回答
0

假设小时和分钟总是存在(甚至0 hours 0 minutes):

$my_time_string = '1 hour and 10 min';
preg_match_all('/\d+/', $my_time_string, $out);
$output = sprintf('%02d:%02d:00', $out[0][0], $out[0][1]);
echo $output;
于 2012-05-16T10:09:26.963 回答
-3

试试这个

$string="1 小时 10 分钟";

echo preg_replace("/[az\s]+/",":",$string)."00

于 2012-05-16T09:52:17.433 回答