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:
parent
66d9c7e491
commit
b9cd66f483
|
@ -3608,6 +3608,7 @@ function sanitize_email( $email ) {
|
||||||
* "5 mins", "2 days".
|
* "5 mins", "2 days".
|
||||||
*
|
*
|
||||||
* @since 1.5.0
|
* @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 $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.
|
* @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 );
|
$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 );
|
$mins = round( $diff / MINUTE_IN_SECONDS );
|
||||||
if ( $mins <= 1 ) {
|
if ( $mins <= 1 ) {
|
||||||
$mins = 1;
|
$mins = 1;
|
||||||
|
|
|
@ -19,6 +19,11 @@ class Tests_Formatting_HumanTimeDiff extends WP_UnitTestCase {
|
||||||
// Data for test_human_time_diff.
|
// Data for test_human_time_diff.
|
||||||
function data_test_human_time_diff() {
|
function data_test_human_time_diff() {
|
||||||
return array(
|
return array(
|
||||||
|
array(
|
||||||
|
'37 seconds',
|
||||||
|
new DateTime( '2016-01-01 12:00:37' ),
|
||||||
|
'Test a difference of 37 seconds.',
|
||||||
|
),
|
||||||
array(
|
array(
|
||||||
'5 mins',
|
'5 mins',
|
||||||
new DateTime( '2016-01-01 12:05:00' ),
|
new DateTime( '2016-01-01 12:05:00' ),
|
||||||
|
|
Loading…
Reference in New Issue