隐蔽时间格式为“%h%m%s”,以秒为单位

时间:2018-08-07 02:23:45

标签: php

我有一个表,其时间格式为“ 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;

}

1 个答案:

答案 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);

演示〜https://3v4l.org/UaEYB