带datetime函数的PHP数组,以秒为单位获取时间


PHP array with datetime function to get time in seconds

我已经在python中编写了这个函数(因为我在那里有很多扎实的知识),但我需要在PHP中使用这个函数(在一些codeigniter项目模型上)。所以我的问题是下面的函数在PHP上会是什么样子:

import datetime
from datetime import timedelta
def getMaxValVerify(myList):
    intervalTime = myList[len(myList) -1][1] -  myList[0][1]
    seconds=timedelta.total_seconds(intervalTime)
    return seconds

现在来解释一下它的作用,对于一个列表(数组),它看起来像这样:

list = [(41740, datetime.datetime(2016, 6, 20, 18, 00, 00)), (41280, datetime.datetime(2016, 6, 20, 18, 00, 30)), (40500, datetime.datetime(2016, 6, 20, 18, 02, 00))]

它将返回从第一个datetime元素到最后一个datetime元素的秒差,在我们的例子中从18:00:00到18:02:00将返回:

print getMaxValVerify(list)
120.0

你应该在PHP中使用DateTime类,它允许你访问dateinterval。

2个日期的例子:

<?php
$dateStart = new DateTime('2016-06-20 18:00:00');
$interval= $dateStart->diff(new DateTime('2016-06-20 18:30:00'));
echo $interval->s.' seconds';

功能示例:

<?php
function getInterval($list) // Although you should use 2 parameters instead
{
    $dateStartList = min($list);
    $dateEndList = max($list);
    $dateStart = new DateTime(dateStartList);
    $interval= $dateStart->diff(new DateTime($dateEndList));
    return $interval->s
}
echo getInterval('2016-06-20 18:00:00', '2016-06-20 17:20:00', '2016-06-20 18:30:00') . ' seconds';

我意识到这个问题已经得到了回答,但是这里有一种用PHP做类似事情的替代方法-唯一的区别是这是"过程"方法与"面向对象"方法。它使用strtotime而不是DateTime对象

 <?php  
       function get_inerval($inputDateTimes) {
            $epochTimes = array_map('strtotime', $inputDateTimes);
            $startDateTime = min($epochTimes);
            $endDateTime = max($epochTimes);
            return round((($endDateTime - $startDateTime) * .001),1);
       }
      $inputs = array('2016-06-20 18:00:00', '2016-06-20 17:20:00', '2016-06-20 18:30:00');
      $result = get_interval($inputs);
      print_r($result);   // returns 120.0

   ?>