2013-12-09 3 views
-1

Я выбираю один dateTime из базы данных mysql, я хочу, чтобы разница в них отныне.Разница между двумя датами в php

php function date_diff подходит для разницы, но я хочу, чтобы результат был следующим На самом деле я хочу показать последнюю известь входа в систему.

first date: 2013-12-07 12:26:10 
Another date: Today 

Вывод должен быть:

20 min 
or 
1 hour 
or 
2 hour 
or 
6 hour 
or 
Yesterday 
or 
2 days ago 

я понятия не имею, как этого добиться. любая помощь будет назначена.

Заранее спасибо

+0

Посмотрите здесь: http://it2.php.net/manual/en/datetime.diff.php – ProGM

+0

надеюсь, это поможет вам http://stackoverflow.com/questions/10681752/human-readable -date-reference-in-php-eg-last-monday –

+0

Возможный дубликат [Как рассчитать разницу между двумя датами с помощью PHP?] (http://stackoverflow.com/questions/676824/how-to-calculate- the-difference-between-two-dates-using-php) –

ответ

1

Привет ниже функция, которая преобразует время как 2013-12-07 12:26:10 для восприятия человеком времени. Вы можете редактировать это для достижения ваших требований

<?php 
function ToHumanReadable($timestamp){ 
    $difference = time() - strtotime($timestamp); 
    $periods = array("sec", "min", "hour", "day", "week", "month", "years", "decade"); 
    $lengths = array("60","60","24","7","4.35","12","10"); 

    if ($difference > 0) { // this was in the past 
     $ending = "ago"; 
    } else { // this was in the future 
     $difference = -$difference; 
     $ending = "to go"; 
    }  
    for($j = 0; $difference >= $lengths[$j]; $j++) $difference /= $lengths[$j]; 
    $difference = round($difference); 
    if($difference != 1) $periods[$j].= "s"; 
    $text = $difference." ".$periods[$j]." ".$ending; 
    return $text; 
} 
echo ToHumanReadable('2013-12-07 12:26:10'); 
?> 

http://www.weberdev.com/get_example.php3?ExampleID=4769

+0

спасибо за вашу помощь, это очень подходит для моего требования – Manwal

+0

, когда я прохожу 2013-12-09 13:03:41, после чего он возвращается на 2 часа. Зачем ?? это неверно. – Manwal

+0

Почему не правильно? Вы используете это на локальном компьютере? Или ваш сервер может быть где-то на западе, где на этот раз все еще не было –

0

проверить это

$date1 = strtotime('2013-12-07 12:26:10'); 
$date2 = time(); 

$diff = abs($date2 - $date1); 
$years = floor($diff/(365*60*60*24)); 
$months = floor(($diff - $years * 365*60*60*24)/(30*60*60*24)); 
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); 
die(var_dump($days)); 
1

С версии PHP> 5 ниже новой даты/функции времени добавляется, чтобы получить разницу:

$datetime1 = new DateTime("2010-06-20"); 
$datetime2 = new DateTime("2011-06-22"); 
$difference = $datetime1->diff($datetime2); 

echo 'Difference: '.$difference->y.' years, ' 
        .$difference->m.' months, ' 
        .$difference->d.' days'; 

print_r($difference); 

Результат, указанный ниже:

Difference: 1 years, 0 months, 2 days 
DateInterval Object 
(
    [y] => 1 
    [m] => 0 
    [d] => 2 
    [h] => 0 
    [i] => 0 
    [s] => 0 
    [invert] => 0 
    [days] => 367 
) 
Смежные вопросы