Что лучший способ состоит в том, чтобы вычислить общее количество секунд между двумя датами? До сих пор я попробовал что-то вроде:
$delta = $date->diff(new DateTime('now'));
$seconds = $delta->days * 60 * 60 * 24;
Однако days
свойство объекта DateInterval, кажется, повреждается в текущей сборке PHP5.3 (по крайней мере, в Windows, это всегда возвращает то же 6015
значение). Я также попытался сделать это способом, который не сохранит количество дней в каждом месяце (раунды к 30), високосные годы, и т.д.:
$seconds = ($delta->s)
+ ($delta->i * 60)
+ ($delta->h * 60 * 60)
+ ($delta->d * 60 * 60 * 24)
+ ($delta->m * 60 * 60 * 24 * 30)
+ ($delta->y * 60 * 60 * 24 * 365);
Но я действительно не доволен использованием этого half-assed решения.
Не могли бы вы вместо этого сравнить метки времени?
$now = new DateTime('now');
$diff = $date->getTimestamp() - $now->getTimestamp()
Вы могли бы просто вставить жесткие числа (вместо 60*60 - поставить 3600), чтобы не вычислять их каждый раз.
Edit - исправил число, основываясь на вашем комментарии.
Вы можете сделать это так:
$currentTime = time();
$timeInPast = strtotime("2009-01-01 00:00:00");
$differenceInSeconds = $currentTime - $timeInPast;
time () возвращает текущее время в секундах с начала эпохи (1970-01-01T00: 00: 00), а strtotime делает то же самое, но в зависимости от указанной вами даты / времени.