Вычислите общие секунды в PHP DateInterval

Что лучший способ состоит в том, чтобы вычислить общее количество секунд между двумя датами? До сих пор я попробовал что-то вроде:

$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 решения.

91
задан efritz 4 July 2010 в 23:51
поделиться

3 ответа

Не могли бы вы вместо этого сравнить метки времени?

$now = new DateTime('now');
$diff = $date->getTimestamp() - $now->getTimestamp()
190
ответ дан 24 November 2019 в 06:43
поделиться

Вы могли бы просто вставить жесткие числа (вместо 60*60 - поставить 3600), чтобы не вычислять их каждый раз.

Edit - исправил число, основываясь на вашем комментарии.

-7
ответ дан 24 November 2019 в 06:43
поделиться

Вы можете сделать это так:

$currentTime = time();
$timeInPast = strtotime("2009-01-01 00:00:00");

$differenceInSeconds = $currentTime - $timeInPast;

time () возвращает текущее время в секундах с начала эпохи (1970-01-01T00: 00: 00), а strtotime делает то же самое, но в зависимости от указанной вами даты / времени.

5
ответ дан 24 November 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: