Я пытаюсь преобразовать строку время, строку я нахожусь в этом формате, «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?
https://eval.in/681782. это то, чего ты хочешь? –
Не нравится, но должен работать: '$ string = '3 часа 45 минут'; $ dateTime = DateTime :: createFromFormat ('h \ h \ o \ ur i \ m \ i \ n \ u \ t \ e \ s', $ string); var_dump ($ dateTime-> format ('H: i: s')); ' – swidmann
Abhishek Salian посмотреть комментарии и ответы и сообщить нам –