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