我有一个表,其时间格式为“ 1h1m1s” (或“ 1m1s” )。那么问题是如何将其转换为仅秒格式?例如 1m1s = 61(秒)。
试图从数据库中选择并用PHP中的算术运算符替换,但是它不起作用。
$options = get_table($table_name, $order);
for($i = 0; $i < count($options); $i++){
$duration = $options[$i]['duration'];
$original = array("h", "m", "s");
$change = array('*3600+', '*60+', '*1');
$string = str_replace($original, $change, $duration);
echo $string;
}
答案 0 :(得分:2)
您的“ 1h1m1s” 格式与PHP的DateInterval
类完全兼容。您可以构造一个,然后使用this answer计算秒数。
例如,您只需要大写“ 1h1m1s” 中的字母,然后在“ PT” 前面加上前缀即可使其成为interval spec。 / p>
/**
* From https://stackoverflow.com/a/25149337/283366, please upvote it
* @param DateInterval $dateInterval
* @return int seconds
*/
function dateIntervalToSeconds($dateInterval)
{
$reference = new DateTimeImmutable;
$endTime = $reference->add($dateInterval);
return $endTime->getTimestamp() - $reference->getTimestamp();
}
$interval = new DateInterval('PT' . strtoupper($duration));
$seconds = dateIntervalToSeconds($interval);