Formatting: Add support for seconds to `human_time_diff()`.

The web has gotten so much faster since `human_time_diff()` was created, we need to be able to measure time differences with much finer granularity. Now, we can.

Props johnjamesjacoby, pento.
Fixes #35655.



git-svn-id: https://develop.svn.wordpress.org/trunk@45573 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Gary Pendergast 2019-06-28 06:43:27 +00:00
parent 66d9c7e491
commit b9cd66f483
2 changed files with 14 additions and 1 deletions

View File

@ -3608,6 +3608,7 @@ function sanitize_email( $email ) {
* "5 mins", "2 days".
*
* @since 1.5.0
* @since 5.3.0 Added support for showing a difference in seconds.
*
* @param int $from Unix timestamp from which the difference begins.
* @param int $to Optional. Unix timestamp to end the time difference. Default becomes time() if not set.
@ -3620,7 +3621,14 @@ function human_time_diff( $from, $to = '' ) {
$diff = (int) abs( $to - $from );
if ( $diff < HOUR_IN_SECONDS ) {
if ( $diff < MINUTE_IN_SECONDS ) {
$secs = $diff;
if ( $secs <= 1 ) {
$secs = 1;
}
/* translators: Time difference between two dates, in seconds. %s: Number of seconds */
$since = sprintf( _n( '%s second', '%s seconds', $secs ), $secs );
} elseif ( $diff < HOUR_IN_SECONDS && $diff >= MINUTE_IN_SECONDS ) {
$mins = round( $diff / MINUTE_IN_SECONDS );
if ( $mins <= 1 ) {
$mins = 1;

View File

@ -19,6 +19,11 @@ class Tests_Formatting_HumanTimeDiff extends WP_UnitTestCase {
// Data for test_human_time_diff.
function data_test_human_time_diff() {
return array(
array(
'37 seconds',
new DateTime( '2016-01-01 12:00:37' ),
'Test a difference of 37 seconds.',
),
array(
'5 mins',
new DateTime( '2016-01-01 12:05:00' ),