Index: src/wp-includes/formatting.php
===================================================================
--- src/wp-includes/formatting.php	(revision 29828)
+++ src/wp-includes/formatting.php	(working copy)
@@ -2523,6 +2523,58 @@
 }
 
 /**
+ * Returns a human-readable time difference between now and a given timestamp.
+ *
+ * An alternative to human_time_diff(). This function calculates the time
+ * difference between now and a given Unix timestamp, and returns the result
+ * in a human-friendly string, such as:
+ *
+ * 4 days, 3 hours, 20 minutes, 15 seconds ago
+ *
+ * @param int $timestamp Unix timestamp to compare to time().
+ * @param int $limit Maximum number of parts (precision) in the given result.
+ * @return string Human-readable time difference.
+ */
+function wp_natural_time( $timestamp, $limit = 1 ) {
+	$from = time();
+	$diff = absint( $from - $timestamp );
+
+	if ( $diff < 1 ) {
+		return apply_filters( 'wp_natural_time', _x( 'now', 'time ago' ), $timestamp, $limit );
+	}
+
+	$result = array();
+
+	$l10n = array(
+		array( YEAR_IN_SECONDS,     _nx_noop( '%s year', '%s years', 'time ago' ) ),
+		array( 30 * DAY_IN_SECONDS, _nx_noop( '%s month', '%s months', 'time ago' ) ),
+		array( WEEK_IN_SECONDS,     _nx_noop( '%s week', '%s weeks', 'time ago' ) ),
+		array( DAY_IN_SECONDS,      _nx_noop( '%s day', '%s days', 'time ago' ) ),
+		array( HOUR_IN_SECONDS,     _nx_noop( '%s hour', '%s hours', 'time ago' ) ),
+		array( MINUTE_IN_SECONDS,   _nx_noop( '%s minute', '%s minutes', 'time ago' ) ),
+		array( 1,                   _nx_noop( '%s second', '%s seconds', 'time ago' ) ),
+	);
+
+	foreach ( $l10n as $key => $pair ) {
+		$count = (int) ( $diff / $pair[0] );
+		if ( $count > 0 ) {
+			$result[] = sprintf( translate_nooped_plural( $l10n[ $key ][1], $count ), $count );
+			$diff -= $count * $pair[0];
+		}
+
+		if ( $limit && count( $result ) >= $limit ) {
+			break;
+		}
+	}
+
+	$label = ( $from > $timestamp ) ? _x( '%s ago', 'time ago' ) : _x( '%s from now', 'time from now' );
+	$result = implode( _x( ', ', 'natural time separator' ), $result );
+	$result = sprintf( $label, $result );
+
+	return apply_filters( 'wp_natural_time', $result, $timestamp, $limit );
+}
+
+/**
  * Generates an excerpt from the content, if needed.
  *
  * The excerpt word amount will be 55 words and if the amount is greater than
