复合持续时间到秒

时间:2018-08-20 19:27:16

标签: php time

尝试在php中将复合持续时间转换为秒:

示例:

1小时3分钟

2小时1分钟

5分钟

1分钟

我尝试过strtotime(),还有另一个内置函数可以转换为秒吗?

感谢您的帮助!

我尝试过的代码$ seconds = strtotime('5分钟');

2 个答案:

答案 0 :(得分:3)

选项1 (健壮):将DateTimeDateInterval 中的函数串在一起以实现所需的功能:

w3

PHP playground

date_create('@0')创建一个带有时间戳<?php $interval = "2 hours"; echo date_create('@0')->add(DateInterval::createFromDateString($interval))->getTimestamp(); ?> 的新DateTime对象,然后使用{{3}为您为0指定的内容添加PHP创建的时间间隔}。最后,您DateInterval::createFromDateString()输出您添加的秒数。


选项2 (更简单):坚持使用数学$interval 以获得正确答案:

strtotime()

get and echo the Unix timestamp

利用对PHP playground的了解,将其与当前的Unix时间抵消,以获取strtotime函数中的秒数。

答案 1 :(得分:0)

确定可以使用strtotime。
只需使用“ +”即可。 $ time,它会假设您的意思是将来会有很多时间。
然后只要减去Unix时间,就可以以秒为单位计算字符串。

$arr = ['1 hour 3 mins','2 hours 1 min','5 mins','1 min'];

foreach($arr as $val){
    $seconds =0;
    $temp = explode(" ", trim($val));
    //Use array_chunk to group the number with unit.
    foreach(array_chunk($temp,2) as $part){
        $seconds +=strtotime("+" . implode(" ", $part)) - time();
    }
    echo $seconds . "\n";
 }

输出:

3780
7260
300
60

https://3v4l.org/n7W3L