llms_get_date_diff( mixed $time1, mixed $time2, integer $precision = 2 )
Get human readable time difference between 2 dates
Description Description
Return difference between 2 dates in year, month, hour, minute or second The $precision caps the number of time units used: for instance if $time1 – $time2 = 3 days, 4 hours, 12 minutes, 5 seconds
- with precision = 1 : 3 days
- with precision = 2 : 3 days, 4 hours
- with precision = 3 : 3 days, 4 hours, 12 minutes.
Parameters Parameters
- $time1
-
(mixed) (Required) A time (string or timestamp).
- $time2
-
(mixed) (Required) A time (string or timestamp).
- $precision
-
(integer) (Optional) precision. Default is 2.
Default value: 2
Return Return
(string) time difference
Source Source
File: includes/llms.functions.core.php
*/ function llms_get_date_diff( $time1, $time2, $precision = 2 ) { // If not numeric then convert timestamps. if ( ! is_numeric( $time1 ) ) { $time1 = strtotime( $time1 ); } if ( ! is_numeric( $time2 ) ) { $time2 = strtotime( $time2 ); } // If time1 > time2 then swap the 2 values. if ( $time1 > $time2 ) { list( $time1, $time2 ) = array( $time2, $time1 ); } // Set up intervals and diffs arrays. $intervals = array( 'year', 'month', 'day', 'hour', 'minute', 'second' ); $l18n_singular = array( 'year' => __( 'year', 'lifterlms' ), 'month' => __( 'month', 'lifterlms' ), 'day' => __( 'day', 'lifterlms' ), 'hour' => __( 'hour', 'lifterlms' ), 'minute' => __( 'minute', 'lifterlms' ), 'second' => __( 'second', 'lifterlms' ), ); $l18n_plural = array( 'year' => __( 'years', 'lifterlms' ), 'month' => __( 'months', 'lifterlms' ), 'day' => __( 'days', 'lifterlms' ), 'hour' => __( 'hours', 'lifterlms' ), 'minute' => __( 'minutes', 'lifterlms' ), 'second' => __( 'seconds', 'lifterlms' ), ); $diffs = array(); foreach ( $intervals as $interval ) { // Create temp time from time1 and interval. $ttime = strtotime( '+1 ' . $interval, $time1 ); // Set initial values. $add = 1; $looped = 0; // Loop until temp time is smaller than time2. while ( $time2 >= $ttime ) { // Create new temp time from time1 and interval. $add++; $ttime = strtotime( '+' . $add . ' ' . $interval, $time1 ); $looped++; } $time1 = strtotime( '+' . $looped . ' ' . $interval, $time1 ); $diffs[ $interval ] = $looped; } $count = 0; $times = array(); foreach ( $diffs as $interval => $value ) { // Break if we have needed precision. if ( $count >= $precision ) { break; } // Add value and interval if value is bigger than 0. if ( $value > 0 ) { if ( 1 != $value ) { $text = $l18n_plural[ $interval ]; } else { $text = $l18n_singular[ $interval ]; } // Add value and interval to times array. $times[] = $value . ' ' . $text; $count++; } } // Return string with times. return implode( ', ', $times );
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
3.24.0 | Introduced. |