PHP使用字符串和/或时间戳计算花费的总时间

时间:2019-05-16 10:09:33

标签: php time unix-timestamp

我试图做一个愚蠢的QPI函数,将一组记录在SQL数据库中的时间记录下来,彼此相减,然后除以我在其中选择的任务(或行)数SQL查询。

我遇到的问题是我的时间段被减去(实际上是两个时间戳之间的持续时间),格式为0000-00-00 00:38:11,是2019-04-19 05:59:36.000和{{ 1}}。

如果我2019-04-19 06:37:47.000会返回strtotime('0000-00-00 00:38:11')的值,而我相当精确的将秒转换为日期的函数会将其转换为943922291,这显然是错误的。

我考虑过以编程方式完成大多数事情,并减少对库的依赖。我将字符串“分解”为它的组成部分,并做了一些基本的操作(以及错误的乘法,因为它忽略了leap年)。但是,我确信这不是正确的方法。

是否可以使用系统库将持续时间转换为秒?


这是我愚蠢的字符串日期到时间转换器,以防万一有用的东西出现:

29 years, 10 months, 29 days, 38 minutes and 11 seconds

下面是上述秒数转换器:

function myFunc($input_date)
  {
        $date = explode(" ", $input_date);
        //////////////////////////////
        $yearmonthday = explode("-", $date[0]); 
        //////////////////////////////
        $years=$yearmonthday[0]; 
        $months=$yearmonthday[1];
        $days=$yearmonthday[2];
        /////////////////////////////
        $hoursminutesseconds = explode(":", $date[1]); 
        $hours=$hoursminutesseconds[0];
        $minutes=$hoursminutesseconds[1];
        $seconds=$hoursminutesseconds[2];

        echo '---------------<br>';    
        echo $input_date;    
        echo '<br>---------------<br>';    
        echo "years: ".$years." months: ".$months." days: ".$days." hours: ".$hours." minutes: ".$minutes." seconds: ".$seconds;
        echo '<br>---------------<br>';

        echo 'MINUTES: '.$minutes.'<br>';
        $minsToSec = $minutes * 60;
        echo 'Mins to Sec: '.$minsToSec.'<br>';


        echo 'HOURS: '.$hours.'<br>';
        $hoursToSec = $hours * 3600;
        echo 'Hours to Sec: '.$hoursToSec.'<br>';

        echo 'DAYS: '.$days.'<br>';
        $daysToSec = $days * 86400;
        echo 'Days to Sec: '.$daysToSec.'<br>';

        echo 'Months: '.$months.'<br>';
        $monthsToSec = $months * 2629746;
        echo 'Months to Sec: '.$monthsToSec.'<br>';

        echo 'Years: '.$years.'<br>';
        $yearssToSec = $years * 31556952;
        echo 'Years to Sec: '.$yearssToSec.'<br>';

        $combined = $minsToSec + $daysToSec + $monthsToSec + $yearssToSec;

        //echo 'All combined: ' . $combined. '<br>';

        return $combined;
  } 

0 个答案:

没有答案