Ticket #38773: 38773.3.diff
File 38773.3.diff, 3.7 KB (added by , 8 years ago) |
---|
-
src/wp-includes/formatting.php
3214 3214 $diff = (int) abs( $to - $from ); 3215 3215 3216 3216 if ( $diff < HOUR_IN_SECONDS ) { 3217 $mins = round( $diff / MINUTE_IN_SECONDS );3217 $mins = floor( $diff / MINUTE_IN_SECONDS ); 3218 3218 if ( $mins <= 1 ) 3219 3219 $mins = 1; 3220 3220 /* translators: min=minute */ 3221 3221 $since = sprintf( _n( '%s min', '%s mins', $mins ), $mins ); 3222 3222 } elseif ( $diff < DAY_IN_SECONDS && $diff >= HOUR_IN_SECONDS ) { 3223 $hours = round( $diff / HOUR_IN_SECONDS );3223 $hours = floor( $diff / HOUR_IN_SECONDS ); 3224 3224 if ( $hours <= 1 ) 3225 3225 $hours = 1; 3226 3226 $since = sprintf( _n( '%s hour', '%s hours', $hours ), $hours ); 3227 3227 } elseif ( $diff < WEEK_IN_SECONDS && $diff >= DAY_IN_SECONDS ) { 3228 $days = round( $diff / DAY_IN_SECONDS );3228 $days = floor( $diff / DAY_IN_SECONDS ); 3229 3229 if ( $days <= 1 ) 3230 3230 $days = 1; 3231 3231 $since = sprintf( _n( '%s day', '%s days', $days ), $days ); 3232 3232 } elseif ( $diff < MONTH_IN_SECONDS && $diff >= WEEK_IN_SECONDS ) { 3233 $weeks = round( $diff / WEEK_IN_SECONDS );3233 $weeks = floor( $diff / WEEK_IN_SECONDS ); 3234 3234 if ( $weeks <= 1 ) 3235 3235 $weeks = 1; 3236 3236 $since = sprintf( _n( '%s week', '%s weeks', $weeks ), $weeks ); 3237 3237 } elseif ( $diff < YEAR_IN_SECONDS && $diff >= MONTH_IN_SECONDS ) { 3238 $months = round( $diff / MONTH_IN_SECONDS );3238 $months = floor( $diff / MONTH_IN_SECONDS ); 3239 3239 if ( $months <= 1 ) 3240 3240 $months = 1; 3241 3241 $since = sprintf( _n( '%s month', '%s months', $months ), $months ); 3242 3242 } elseif ( $diff >= YEAR_IN_SECONDS ) { 3243 $years = round( $diff / YEAR_IN_SECONDS );3243 $years = floor( $diff / YEAR_IN_SECONDS ); 3244 3244 if ( $years <= 1 ) 3245 3245 $years = 1; 3246 3246 $since = sprintf( _n( '%s year', '%s years', $years ), $years ); -
tests/phpunit/tests/formatting/HumanTimeDiff.php
1 <?php 2 3 /** 4 * @group formatting 5 * @ticket 38773 6 */ 7 class Tests_Formatting_HiumanTimeDiff extends WP_UnitTestCase { 8 function test_simple() { 9 // Test some basic differences such as "1 hour", "5 mins", "2 days". 10 $startdate = new DateTime( '2016-01-01 12:00:00' ); 11 12 // Test a difference of 5 minutes. 13 $stopdate = new DateTime( '2016-01-01 12:05:00' ); 14 $this->assertEquals( '5 mins', human_time_diff( $startdate->getTimestamp(), $stopdate->getTimestamp() ) ); 15 16 // Test a difference of 1 hour. 17 $stopdate = new DateTime( '2016-01-01 13:00:00' ); 18 $this->assertEquals( '1 hour', human_time_diff( $startdate->getTimestamp(), $stopdate->getTimestamp() ) ); 19 20 // Test a difference of 2 days. 21 $stopdate = new DateTime( '2016-01-03 12:00:00' ); 22 $this->assertEquals( '2 days', human_time_diff( $startdate->getTimestamp(), $stopdate->getTimestamp() ) ); 23 } 24 function test_rounding() { 25 // Test some close dates for rounding issues. 26 $startdate = new DateTime( '2016-01-01 12:00:00' ); 27 28 // Test a difference of 2 hours and 30 minutes and 1 second. 29 $stopdate = new DateTime( '2016-01-01 14:30:01' ); 30 $this->assertEquals( '2 hours', human_time_diff( $startdate->getTimestamp(), $stopdate->getTimestamp() ) ); 31 32 // Test a difference of 1 month and 16 days. 33 $stopdate = new DateTime( '2016-02-17 12:00:00' ); 34 $this->assertEquals( '1 month', human_time_diff( $startdate->getTimestamp(), $stopdate->getTimestamp() ) ); 35 36 // Test a difference of 2 years 6 months and 1 day. 37 $stopdate = new DateTime( '2018-07-02 12:00:00' ); 38 $this->assertEquals( '2 years', human_time_diff( $startdate->getTimestamp(), $stopdate->getTimestamp() ) ); 39 } 40 41 }