Конвертировать строку во время в php - PullRequest
6 голосов
/ 11 ноября 2011

Как преобразовать "2011-11-03T17:27:56Z" во время в php.

Я хочу разницу во времени с текущим временем.

т.е. если разница во времени с текущим временем составляет 10 минут, то я хочу 10 минут.Если его 1 день, то я хочу 1 день.

Ответы [ 4 ]

7 голосов
/ 11 ноября 2011

Этот небольшой фрагмент даст вам разницу в секундах между текущей и текущей датами.

$dateString = "2011-11-03T17:27:56Z";
$date = strtotime($dateString);
$diff = time() - $date;
echo $diff;

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

function time_diff($s) { 
    $m = 0; $hr = 0; $d = 0; $td = "now";
    if ($s > 59) { 
        $m = (int)($s/60); 
        $s = $s-($m*60); // sec left over 
        $td = "$m min"; 
    } 
    if ($m > 59) { 
        $hr = (int)($m / 60); 
        $m = $m - ($hr*60); // min left over 
        $td = "$hr hr"; 
        if ($hr > 1) {
            $td .= "s";
        }
        if ($m > 0) {
            $td .= ", $m min";
        }
    } 
    if ($hr > 23) { 
        $d = (int) ($hr / 24); 
        $hr = $hr-($d*24); // hr left over 
        $td = "$d day"; 
        if ($d > 1) {
            $td .= "s";
        }
        if ($d < 3) { 
            if ($hr > 0) {
                $td .= ", $hr hr";
            }
            if ($hr > 1) {
                $td .= "s";
            }
        } 
    } 
    return $td; 
} 

Комбинируя оба, вот что вы получите:

$dateString = "2011-11-03T17:27:56Z";
$date = strtotime($dateString);
$diff = time() - $date;
echo time_diff($diff);

Выходы:

8 дней

3 голосов
/ 11 ноября 2011

Рабочий пример: ( кодовая панель здесь )

<?php

$time_str = "2011-11-03T17:27:56Z";

//echo date('d/m/y H:i:s', strtotime($time_str));
$diff = abs(strtotime("now") - strtotime($time_str)); 

$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));
$hours   = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*60)); 
$minuts  = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60); 
$seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minuts*60)); 
printf("%d years, %d months, %d days, %d hours, %d minuts\n, %d seconds\n", $years, $months, $days, $hours, $minuts, $seconds);

(разница времени здесь взята: Как рассчитать разницу между двумя датами с помощью PHP? )

3 голосов
/ 11 ноября 2011
$diffInSecs = time() - strtotime('2011-11-03T17:27:56Z');
2 голосов
/ 11 ноября 2011

Я полагаю, вам нужна функция strtotime():

$some_time = strtotime("2011-11-03T17:27:56Z");//outputs a UNIX TIMESTAMP
$time_diff = (time() - $some_time);
if ($time_diff > 86400) {
    echo round($time_diff / 86400) . " days";
} else if ($time_diff > 3600) {
    echo round($time_diff / 3600) . " hours";
} else {
    echo round($time_diff / 60) . " minutes";
}

http://us.php.net/manual/en/function.strtotime.php

Функция ожидает получения строки, содержащей английский формат даты, и попытаетсяпроанализировать этот формат в метку времени Unix

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...