Make WordPress Core

Changeset 24582


Ignore:
Timestamp:
07/08/2013 01:00:34 PM (11 years ago)
Author:
nacin
Message:

Expand human_time_diff() from minutes/hours/days to also include weeks/months/years. Fix off-by-one issue.

props SergeyBiryukov, westi.
fixes #9272.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/formatting.php

    r24490 r24582  
    21342134    if ( empty( $to ) )
    21352135        $to = time();
     2136
    21362137    $diff = (int) abs( $to - $from );
    2137     if ( $diff <= HOUR_IN_SECONDS ) {
     2138
     2139    if ( $diff < HOUR_IN_SECONDS ) {
    21382140        $mins = round( $diff / MINUTE_IN_SECONDS );
    2139         if ( $mins <= 1 ) {
     2141        if ( $mins <= 1 )
    21402142            $mins = 1;
    2141         }
    21422143        /* translators: min=minute */
    21432144        $since = sprintf( _n( '%s min', '%s mins', $mins ), $mins );
    2144     } elseif ( ( $diff <= DAY_IN_SECONDS ) && ( $diff > HOUR_IN_SECONDS ) ) {
     2145    } elseif ( $diff < DAY_IN_SECONDS && $diff >= HOUR_IN_SECONDS ) {
    21452146        $hours = round( $diff / HOUR_IN_SECONDS );
    2146         if ( $hours <= 1 ) {
     2147        if ( $hours <= 1 )
    21472148            $hours = 1;
    2148         }
    21492149        $since = sprintf( _n( '%s hour', '%s hours', $hours ), $hours );
    2150     } elseif ( $diff >= DAY_IN_SECONDS ) {
     2150    } elseif ( $diff < WEEK_IN_SECONDS && $diff >= DAY_IN_SECONDS ) {
    21512151        $days = round( $diff / DAY_IN_SECONDS );
    2152         if ( $days <= 1 ) {
     2152        if ( $days <= 1 )
    21532153            $days = 1;
    2154         }
    21552154        $since = sprintf( _n( '%s day', '%s days', $days ), $days );
    2156     }
     2155    } elseif ( $diff < 30 * DAY_IN_SECONDS && $diff >= WEEK_IN_SECONDS ) {
     2156        $weeks = round( $diff / WEEK_IN_SECONDS );
     2157        if ( $weeks <= 1 )
     2158            $weeks = 1;
     2159        $since = sprintf( _n( '%s week', '%s weeks', $weeks ), $weeks );
     2160    } elseif ( $diff < YEAR_IN_SECONDS && $diff >= 30 * DAY_IN_SECONDS ) {
     2161        $months = round( $diff / ( 30 * DAY_IN_SECONDS ) );
     2162        if ( $months <= 1 )
     2163            $months = 1;
     2164        $since = sprintf( _n( '%s month', '%s months', $months ), $months );
     2165    } elseif ( $diff >= YEAR_IN_SECONDS ) {
     2166        $years = round( $diff / YEAR_IN_SECONDS );
     2167        if ( $years <= 1 )
     2168            $years = 1;
     2169        $since = sprintf( _n( '%s year', '%s years', $years ), $years );
     2170    }
     2171
    21572172    return $since;
    21582173}
Note: See TracChangeset for help on using the changeset viewer.