6

How to convert "2011-11-03T17:27:56Z" to time in php.

I want time difference from current time.

i.e. if time difference from current time is 10 minutes the I want 10 minutes. If its 1 day then I want 1 day.

4 Answers 4

6

This little snippet will give you the difference in seconds between now and the given date.

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

To give it the specific format you're asking for you can use the below function I found here:

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; 
} 

Combining the both this is what you get:

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

Outputs:

8 days

Sign up to request clarification or add additional context in comments.

Comments

2
$diffInSecs = time() - strtotime('2011-11-03T17:27:56Z');

Comments

2

Working example: (codepad here)

<?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);

(time diff took here: How to calculate the difference between two dates using PHP?)

Comments

1

I believe you want the strtotime() function:

$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

The function expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.