1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
<?php
namespace GeniBase\Util;
use Gedcomx\Util\SimpleDate;
class Date
{
protected static $periods = [
'year' => 1,
'month' => 1,
'day' => 16,
];
public static function expand($isAverage, SimpleDate $date, $endOfRange = false)
{
$result = clone $date;
$dt = new \DateTime($date);
$per = self::$periods;
if ($endOfRange) {
$per = array_map(
function ($v) {
return -$v;
},
$per
);
}
if ($isAverage) {
if (! empty($t = $result->getDay())) {
$dt->sub(new \DateInterval('P' . self::$periods['day'] . 'D'));
} elseif (! empty($t = $result->getMonth())) {
$dt->sub(new \DateInterval('P' . self::$periods['month'] . 'M'));
} elseif (! empty($t = $result->getYear())) {
$dt->sub(new \DateInterval('P' . self::$periods['year'] . 'Y'));
}
$result->parse('+' . $dt->format(DATE_W3C));
}
$result->parse('+' . $dt->format(DATE_W3C));
return $result;
}
}