<?php
function diff(\DateTime $datetime1, \DateTime $datetime2 = null)
{
if (!isset($datetime2)) { $datetime2 = new \DateTime('now');
}
$interval = $datetime1->diff($datetime2, false);
$days = $interval->days;
// calculate seconds
$interval->s = $datetime2->getTimestamp() - $datetime1->getTimestamp();
$interval->i = floor($interval->s / 60); $interval->h = floor($interval->s / (60 * 60)); $interval->d = $days;
$interval->w = floor($days / 7); $interval->m = floor($days / $datetime1->format('t'));
return $interval;
}
$interval = diff(new \DateTime('2015-02-01'), new \DateTime('2015-03-01'));
echo "лет: {$interval->y}\nчасов: {$interval->h}\nминут: {$interval->i}\nсекунд: {$interval->s}\n\n";
echo $interval->format('%y лет, %M месяцев, %D дней, %H часов, %I минут, %S секунд');
PD9waHAKCmZ1bmN0aW9uIGRpZmYoXERhdGVUaW1lICRkYXRldGltZTEsIFxEYXRlVGltZSAkZGF0ZXRpbWUyID0gbnVsbCkKewogICAgaWYgKCFpc3NldCgkZGF0ZXRpbWUyKSkgewogICAgICAgICRkYXRldGltZTIgPSBuZXcgXERhdGVUaW1lKCdub3cnKTsKICAgIH0KCiAgICAkaW50ZXJ2YWwgPSAkZGF0ZXRpbWUxLT5kaWZmKCRkYXRldGltZTIsIGZhbHNlKTsKICAgICRkYXlzID0gJGludGVydmFsLT5kYXlzOwoKICAgIC8vIGNhbGN1bGF0ZSBzZWNvbmRzCiAgICAkaW50ZXJ2YWwtPnMgPSAkZGF0ZXRpbWUyLT5nZXRUaW1lc3RhbXAoKSAtICRkYXRldGltZTEtPmdldFRpbWVzdGFtcCgpOwogICAgJGludGVydmFsLT5pID0gZmxvb3IoJGludGVydmFsLT5zIC8gNjApOwogICAgJGludGVydmFsLT5oID0gZmxvb3IoJGludGVydmFsLT5zIC8gKDYwICogNjApKTsKICAgICRpbnRlcnZhbC0+ZCA9ICRkYXlzOwogICAgJGludGVydmFsLT53ID0gZmxvb3IoJGRheXMgLyA3KTsKICAgICRpbnRlcnZhbC0+bSA9IGZsb29yKCRkYXlzIC8gJGRhdGV0aW1lMS0+Zm9ybWF0KCd0JykpOwoKICAgIHJldHVybiAkaW50ZXJ2YWw7Cn0KJGludGVydmFsID0gZGlmZihuZXcgXERhdGVUaW1lKCcyMDE1LTAyLTAxJyksIG5ldyBcRGF0ZVRpbWUoJzIwMTUtMDMtMDEnKSk7CgplY2hvICLQu9C10YI6IHskaW50ZXJ2YWwtPnl9XG7Rh9Cw0YHQvtCyOiB7JGludGVydmFsLT5ofVxu0LzQuNC90YPRgjogeyRpbnRlcnZhbC0+aX1cbtGB0LXQutGD0L3QtDogeyRpbnRlcnZhbC0+c31cblxuIjsKCmVjaG8gJGludGVydmFsLT5mb3JtYXQoJyV5INC70LXRgiwgJU0g0LzQtdGB0Y/RhtC10LIsICVEINC00L3QtdC5LCAlSCDRh9Cw0YHQvtCyLCAlSSDQvNC40L3Rg9GCLCAlUyDRgdC10LrRg9C90LQnKTs=