date — Как узнать разницу времени в минутах в Stack Overflow

Как рассчитать разницу между двумя датами и временем в PHP?

230

Решение

Вычтите прошлый самый один из будущего самый один и разделите на 60.

Времена делаются в формате Unix, поэтому они представляют собой большое число, показывающее количество секунд с January 1, 1970, 00:00:00 GMT

79

Другие решения

Ответы выше для старых версий PHP. Используйте класс DateTime для выполнения любых вычислений даты теперь, когда PHP 5.3 является нормой.
Например.

$start_date = new DateTime('2007-09-01 04:10:58');
$since_start = $start_date->diff(new DateTime('2012-09-11 10:25:00'));
echo $since_start->days.' days total<br>';
echo $since_start->y.' years<br>';
echo $since_start->m.' months<br>';
echo $since_start->d.' days<br>';
echo $since_start->h.' hours<br>';
echo $since_start->i.' minutes<br>';
echo $since_start->s.' seconds<br>';

$ Since_start является DateInterval объект. Обратите внимание, что свойство days доступно (поскольку мы использовали метод diff класса DateTime для создания объекта DateInterval).

Код выше выведет:

Всего 1837 дней
5 лет
0 месяцев
10 дней
6 часов
14 минут
2 секунды

Чтобы получить общее количество минут:

$minutes = $since_start->days * 24 * 60;
$minutes += $since_start->h * 60;
$minutes += $since_start->i;
echo $minutes.' minutes';

Это выведет:

2645654 минут

Который является фактическим количеством минут, прошедших между двумя датами. Класс DateTime будет учитывать переход на летнее время (в зависимости от часового пояса), а «старый путь» — нет. Прочитайте руководство о дате и времени http://www.php.net/manual/en/book.datetime.php

332

Вот ответ:

$to_time = strtotime("2008-12-13 10:42:00");
$from_time = strtotime("2008-12-13 10:21:00");
echo round(abs($to_time - $from_time) / 60,2). " minute";
315

<?php
$date1 = time();
sleep(2000);
$date2 = time();
$mins = ($date2 - $date1) / 60;
echo $mins;
?>
25

Это работало на моих программах, я использую date_diff, ты можешь проверить date_diff руководство по Вот.

$start = date_create('2015-01-26 12:01:00');
$end = date_create('2015-01-26 13:15:00');
$diff=date_diff($end,$start);
print_r($diff);

Вы получаете результаты, что вы хотите.

14

другой способ с часовым поясом.

$start_date = new DateTime("2013-12-24 06:00:00",new DateTimeZone('Pacific/Nauru'));
$end_date = new DateTime("2013-12-24 06:45:00", new DateTimeZone('Pacific/Nauru'));
$interval = $start_date->diff($end_date);
$hours   = $interval->format('%h');
$minutes = $interval->format('%i');
echo  'Diff. in minutes is: '.($hours * 60 + $minutes);
12

Я написал эту функцию для одного моего сайта блога (разница между прошедшей датой и датой сервера). Это даст вам вывод, как это

«49 секунд назад», «20 минут назад», «21 час назад» и т. Д.

Я использовал функцию, которая получала бы мне разницу между прошедшей датой и датой сервера.

<?php

//Code written by purpledesign.in Jan 2014
function dateDiff($date)
{
$mydate= date("Y-m-d H:i:s");
$theDiff="";
//echo $mydate;//2014-06-06 21:35:55
$datetime1 = date_create($date);
$datetime2 = date_create($mydate);
$interval = date_diff($datetime1, $datetime2);
//echo $interval->format('%s Seconds %i Minutes %h Hours %d days %m Months %y Year    Ago')."<br>";
$min=$interval->format('%i');
$sec=$interval->format('%s');
$hour=$interval->format('%h');
$mon=$interval->format('%m');
$day=$interval->format('%d');
$year=$interval->format('%y');
if($interval->format('%i%h%d%m%y')=="00000")
{
//echo $interval->format('%i%h%d%m%y')."<br>";
return $sec." Seconds";

}

else if($interval->format('%h%d%m%y')=="0000"){
return $min." Minutes";
}else if($interval->format('%d%m%y')=="000"){
return $hour." Hours";
}else if($interval->format('%m%y')=="00"){
return $day." Days";
}

else if($interval->format('%y')=="0"){
return $mon." Months";
}

else{
return $year." Years";
}

}
?>

Сохраните его как файл, допустим, «date.php». Вызовите функцию с другой страницы, как это

<?php
require('date.php');
$mydate='2014-11-14 21:35:55';
echo "The Difference between the server's date and $mydate is:<br> ";
echo dateDiff($mydate);
?>

Конечно, вы можете изменить функцию, чтобы передать два значения.

9

Я думаю, что это поможет вам

function calculate_time_span($date){
$seconds  = strtotime(date('Y-m-d H:i:s')) - strtotime($date);

$months = floor($seconds / (3600*24*30));
$day = floor($seconds / (3600*24));
$hours = floor($seconds / 3600);
$mins = floor(($seconds - ($hours*3600)) / 60);
$secs = floor($seconds % 60);

if($seconds < 60)
$time = $secs." seconds ago";
else if($seconds < 60*60 )
$time = $mins." min ago";
else if($seconds < 24*60*60)
$time = $hours." hours ago";
else if($seconds < 24*60*60)
$time = $day." day ago";
else
$time = $months." month ago";

return $time;
}
8
По вопросам рекламы [email protected]