Finding Time Elapsed Since a Date Time in PHP
Determining the time elapsed since a specific date and time can be useful in various applications, such as displaying the time since an event occurred. In PHP, there are ways to calculate and format the time elapsed in a user-friendly manner.
Calculating Elapsed Time
To calculate the elapsed time between a given date time and the current time, you can use the strtotime() function to convert the string representation of the date time into a timestamp. The timestamp can then be subtracted from the current timestamp, which represents the current time in seconds since the Unix epoch (January 1, 1970 UTC).
For example:
$time = strtotime('2010-04-28 17:25:43'); $elapsedTime = time() - $time;
Formatting Elapsed Time
Once you have the elapsed time as a number of seconds, you can format it in a user-friendly manner. A common approach is to convert the seconds into units such as minutes, days, or years. You can use a loop to iterate through a list of units and their corresponding number of seconds, then return the appropriate unit and its value.
For instance, the following function calculates and formats the elapsed time:
function humanTiming($time) { $tokens = array ( 31536000 => 'year', 2592000 => 'month', 604800 => 'week', 86400 => 'day', 3600 => 'hour', 60 => 'minute', 1 => 'second' ); foreach ($tokens as $unit => $text) { if ($time < $unit) continue; $numberOfUnits = floor($time / $unit); return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':''); } }
Example Usage
To use this function, you can simply pass the timestamp as an argument:
$time = strtotime('2010-04-28 17:25:43'); echo 'Event happened '.humanTiming($time).' ago';
This will output the elapsed time in a format suitable for user display, such as "Event happened 4 days ago" or "Event happened 1 minute ago".
The above is the detailed content of How to Calculate and Format Elapsed Time Since a Date in PHP?. For more information, please follow other related articles on the PHP Chinese website!