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
318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 | */ 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. |