Convert string over time in php

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

I want a time difference from the current time.

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

+6
source share
4 answers

This small snippet will give you the difference in seconds between date and date.

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

To indicate the specific format you are requesting, you can use the following function that 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 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

+7
source
 $diffInSecs = time() - strtotime('2011-11-03T17:27:56Z'); 
+3
source

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 here: How to calculate the difference between two dates using PHP? )

+3
source

I believe you need 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 that a string containing the English date format will be set and will try to parse this format in the Unix timestamp

+2
source

Source: https://habr.com/ru/post/901312/


All Articles