我已经在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
?>