2009-10-05 18:11:08
2009-10-05 18:07:13
Это должно генерировать 235, как это сделать?
2009-10-05 18:11:08
2009-10-05 18:07:13
Это должно генерировать 235, как это сделать?
Вы можете использовать strtotime(), чтобы сделать это:
$diff = strtotime('2009-10-05 18:11:08') - strtotime('2009-10-05 18:07:13')
С объектами DateTime вы можете сделать это следующим образом:
$date = new DateTime( '2009-10-05 18:07:13' );
$date2 = new DateTime( '2009-10-05 18:11:08' );
$diffInSeconds = $date2->getTimestamp() - $date->getTimestamp();
Ссылка PHP Date Time полезна для таких вещей: PHP Date Time Functions
strtotime(), вероятно, лучший способ.
$seconds = strtotime('2009-10-05 18:11:08') - strtotime('2009-10-05 18:07:13')
Из-за ограничений unix-эпохи у вас могут возникнуть проблемы с датами сопоставления до 1970 года и после 2038 года. Я решил потерять точность (= не смотреть на одну секунду), но избегать перехода через unix epoch conversion (getTimestamp). Это зависит от того, что вы делаете, чтобы сделать...
В моем случае использование 365 вместо (12 * 30) и "30" в качестве средней месячной длины уменьшило ошибку в полезном выходе.
function DateIntervalToSec($start,$end){ // as datetime object returns difference in seconds
$diff = $end->diff($start);
$diff_sec = $diff->format('%r').( // prepend the sign - if negative, change it to R if you want the +, too
($diff->s)+ // seconds (no errors)
(60*($diff->i))+ // minutes (no errors)
(60*60*($diff->h))+ // hours (no errors)
(24*60*60*($diff->d))+ // days (no errors)
(30*24*60*60*($diff->m))+ // months (???)
(365*24*60*60*($diff->y)) // years (???)
);
return $diff_sec;
}
Обратите внимание, что ошибка может быть 0, если для средних значений используются "средние" величины. Документы PHP не говорят об этом... В плохом случае ошибка может быть:
Я предпочитаю предполагать, что кто-то решил считать "м" как 30 дней и "у" как 365, зарядив "d" с той разницей, когда "diff" проходит через не-30-дневные месяцы...
Если кто-то знает что-то об этом и может предоставить официальную документацию, приветствуется!
strtotime("2009-10-05 18:11:08") - strtotime("2009-10-05 18:07:13")