public static function parseDate($date)
{
// DateTimeInterface is only on PHP 5.5+, and includes DateTimeImmutable
if (!$date instanceof \DateTime && !$date instanceof \DateTimeInterface) {
try {
if (is_integer($date)) {
$date = \DateTime::createFromFormat('U', $date);
$date->setTimezone(new \DateTimeZone('UTC'));
// default is +00:00 (see issue #15)
} else {
$date = new \DateTime($date);
}
} catch (\Exception $e) {
throw new \InvalidArgumentException("Failed to parse the date");
}
} else {
$date = clone $date;
// avoid reference problems
}
return $date;
}