Skip to content

Instantly share code, notes, and snippets.

@mCzolko
Last active October 14, 2015 16:02
Show Gist options
  • Save mCzolko/efb5f3890dc2aa0a296c to your computer and use it in GitHub Desktop.
Save mCzolko/efb5f3890dc2aa0a296c to your computer and use it in GitHub Desktop.
<?php
class DateTimeHelper {
/**
* @param array $dateintervals Array of \DateInterval
* @return \DateInterval
*/
public function calculateIntervalAverage($dateintervals)
{
$offset = new \DateTime('@0');
foreach ($dateintervals as $interval)
$offset->add($interval);
$averageSeconds = round($offset->getTimestamp() / count($dateintervals));
$today = new \DateTime('@0');
$datetime = new \DateTime('@0');
$datetime->setTime(0, 0, $averageSeconds);
return $datetime->diff($today);
}
/**
* @param array $dateIntervals Array of \DateInterval
* @return \DateInterval|null
*/
public function calculateIntervalMin($dateIntervals)
{
$min = null;
foreach ($dateIntervals as $interval)
{
$dateTimeInterval = new \DateTime('@0');
$dateTimeInterval->add($interval);
if ($min == null) {
$min = $interval;
continue;
}
$emptyDateTime = new \DateTime('@0');
$emptyDateTime->add($min);
if ($emptyDateTime > $dateTimeInterval)
$min = $interval;
}
return $min;
}
/**
* @param array $dateIntervals Array of \DateInterval
* @return \DateInterval|null
*/
public function calculateIntervalMax($dateIntervals)
{
$max = null;
foreach ($dateIntervals as $interval)
{
$dateTimeInterval = new \DateTime('@0');
$dateTimeInterval->add($interval);
if ($max == null) {
$max = $interval;
continue;
}
$emptyDateTime = new \DateTime('@0');
$emptyDateTime->add($max);
if ($emptyDateTime < $dateTimeInterval)
$max = $interval;
}
return $max;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment