diff --git src/bp-core/bp-core-functions.php src/bp-core/bp-core-functions.php
index 592f5b155..96121e07c 100644
--- src/bp-core/bp-core-functions.php
+++ src/bp-core/bp-core-functions.php
@@ -1357,6 +1357,45 @@ function bp_core_time_since( $older_date, $newer_date = false ) {
 	return apply_filters( 'bp_core_time_since', $output, $older_date, $newer_date );
 }
 
+/**
+ * Returns an age to display according to the birth date.
+ *
+ * @since 8.0.0
+ *
+ * @param int|string $birth_date A timestamp or a MySQL formatted date.
+ * @return string The age to display.
+ */
+function bp_core_time_old( $birth_date ) {
+	if ( ! is_numeric( $birth_date ) ) {
+		$birth_date = mysql2date( 'U', $birth_date, false );
+	}
+
+	$date = (int) date_i18n( 'Y', $birth_date, false );
+	$now  = (int) date_i18n( 'Y', bp_core_current_time( true, 'timestamp' ), false );
+	$age  = $now - $date;
+
+	if ( 0 > $age ) {
+		$age = 0;
+	}
+
+	/**
+	 * Filters the value to use to display the age.
+	 *
+	 * @since 8.0.0
+	 *
+	 * @param string $value String representing the time since the older date.
+	 * @param int    $age   The age.
+	 */
+	$age_text = apply_filters(
+		'bp_core_time_old',
+		/* translators: %d: the age in years. */
+		_n( '%d year old', '%d years old', $age, 'buddypress' ),
+		$age
+	);
+
+	return sprintf( $age_text, $age );
+}
+
 /**
  * Output an ISO-8601 date from a date string.
  *
diff --git src/bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php src/bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php
index 276253005..45d082280 100644
--- src/bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php
+++ src/bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php
@@ -479,7 +479,14 @@ class BP_XProfile_Field_Type_Datebox extends BP_XProfile_Field_Type {
 					<div class="bp-date-format-option">
 						<label for="date-format-elapsed">
 							<input type="radio" name="field-settings[date_format]" id="date-format-elapsed" <?php checked( 'elapsed', $settings['date_format'] ); ?> value="elapsed" aria-describedby="date-format-elapsed-setting" />
-							<span class="date-format-label" id="date-format-elapsed-setting"><?php esc_html_e( 'Time elapsed', 'buddypress' ); ?></span> <?php _e( '<code>4 years ago</code>, <code>4 years from now</code>', 'buddypress' ); ?>
+							<span class="date-format-label" id="date-format-elapsed-setting"><?php esc_html_e( 'Time elapsed', 'buddypress' ); ?></span> <?php printf( '<code>%1$s</code>, <code>%2$s</code>', esc_html__( '4 years ago', 'buddypress' ), esc_html__( '4 years from now', 'buddypress' ) ); ?>
+						</label>
+					</div>
+
+					<div class="bp-date-format-option">
+						<label for="date-format-age">
+							<input type="radio" name="field-settings[date_format]" id="date-format-age" <?php checked( 'age', $settings['date_format'] ); ?> value="age" aria-describedby="date-format-age-setting" />
+							<span class="date-format-label" id="date-format-age-setting"><?php esc_html_e( 'Age', 'buddypress' ); ?></span> <?php printf( '<code>%s</code>', esc_html__( '20 years old', 'buddypress' ) ); ?>
 						</label>
 					</div>
 
@@ -601,6 +608,10 @@ class BP_XProfile_Field_Type_Datebox extends BP_XProfile_Field_Type {
 				$formatted = bp_core_time_since( $field_value );
 			break;
 
+			case 'age' :
+				$formatted = bp_core_time_old( $field_value );
+			break;
+
 			case 'custom' :
 				$formatted = date_i18n( $settings['date_format_custom'], $field_value );
 			break;
diff --git tests/phpunit/testcases/core/functions.php tests/phpunit/testcases/core/functions.php
index f3c20c1d8..0575ead4d 100644
--- tests/phpunit/testcases/core/functions.php
+++ tests/phpunit/testcases/core/functions.php
@@ -187,6 +187,54 @@ class BP_Tests_Core_Functions extends BP_UnitTestCase {
 		$this->assertEquals( 'sometime ago', bp_core_time_since( $then, $now ) );
 	}
 
+	/**
+	 * @group bp_core_time_old
+	 */
+	public function test_bp_core_time_old_timestamp() {
+		$then = time() - 473040000;
+		$this->assertEquals( '15 years old', bp_core_time_old( $then ) );
+	}
+
+	/**
+	 * @group bp_core_time_old
+	 */
+	public function test_bp_core_time_old_mysql() {
+		$then = gmdate( 'Y-m-d h:i:s', time() - 473040000 );
+		$this->assertEquals( '15 years old', bp_core_time_old( $then ) );
+	}
+
+	/**
+	 * @group bp_core_time_old
+	 */
+	public function test_bp_core_time_old_one() {
+		$then = time() - 31536000;
+		$this->assertEquals( '1 year old', bp_core_time_old( $then ) );
+	}
+
+	/**
+	 * @group bp_core_time_old
+	 */
+	public function test_bp_core_time_old_zero() {
+		$now = time();
+		$this->assertEquals( '0 years old', bp_core_time_old( $now ) );
+	}
+
+	/**
+	 * @group bp_core_time_old
+	 */
+	public function test_bp_core_time_old_future() {
+		$then = time() + 31536000;
+		$this->assertEquals( '0 years old', bp_core_time_old( $then ) );
+	}
+
+	/**
+	 * @group bp_core_time_old
+	 */
+	public function test_bp_core_time_old_decimals() {
+		$then = time() - 15768000;
+		$this->assertEquals( '1 year old', bp_core_time_old( $then ) );
+	}
+
 	/**
 	 * @group bp_format_time
 	 */
