PANOV_DEV
@PANOV_DEV

Как из строки перевести в секунды?

Есть строка $a = "1d 35m";
В строке у меня может быть просто указано что-то одно, типа "1d" или же "3h" или же может быть указано год, часы, минуты, секунду.

Вот как мне отследить это все и перевести в секунды? Нужно отследить правильно, чтобы строка состояла имено из времени, если допустим будет что-то не то, значит строка указана не верно
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka
Токсичный шарпист
Ну нужно написать свой парсер и посчитать.
Самое простое - разделить по пробелу, посмотреть на суффикс, сопоставить суффикс с числом секунд и умножить на первую часть элемента.
Потом всё сложить.

Если на каком-то из шагов встретился неожиданный символ - значит всё криво
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$a = '1d 35m';
if (preg_match('/^(?:(?<days>\d+)d)?\s*(?:(?<hours>\d+)h)?\s*(?:(?<minutes>\d+)m)?\s*(?:(?<seconds>\d+)s)?$/', $a, $matches)) { 
    $resultSec = intval($matches['days'] ?? '') * 86400 + intval($matches['hours'] ?? '') * 3600
               + intval($matches['minutes'] ?? '') * 60 + intval($matches['seconds'] ?? '');
    echo $resultSec;
} else {
	echo 'error';
}
// 88500

А "год" - это сколько секунд? А какой год, високосный или нет?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы