diff --git src/bp-core/bp-core-functions.php src/bp-core/bp-core-functions.php
index 9e46100..e2b6d79 100644
--- src/bp-core/bp-core-functions.php
+++ src/bp-core/bp-core-functions.php
@@ -759,11 +759,19 @@ function bp_core_get_site_path() {
  * @since BuddyPress (1.2.6)
  *
  * @param bool $gmt True to use GMT (rather than local) time. Default: true.
+ * @param bool $unix True to use UNIX timestamp. False to use formatted date.
+ *        Default: false.
  * @return string Current time in 'Y-m-d h:i:s' format.
  */
-function bp_core_current_time( $gmt = true ) {
-	// Get current time in MYSQL format
-	$current_time = current_time( 'mysql', $gmt );
+function bp_core_current_time( $gmt = true, $unix = false ) {
+	if ( true == $unix ) {
+		$mode = 'timestamp';
+	} else {
+		$mode = 'mysql';
+	}
+
+	// Get current time
+	$current_time = current_time( $mode, $gmt );
 
 	return apply_filters( 'bp_core_current_time', $current_time );
 }
@@ -828,7 +836,7 @@ function bp_core_time_since( $older_date, $newer_date = false ) {
 	 * a date and the current time. $newer_date will have a value if we want to
 	 * work out time elapsed between two known dates.
 	 */
-	$newer_date = ( !$newer_date ) ? strtotime( bp_core_current_time() ) : $newer_date;
+	$newer_date = ( !$newer_date ) ? bp_core_current_time( true, true ) : $newer_date;
 
 	// Difference in seconds
 	$since = $newer_date - $older_date;
diff --git tests/phpunit/testcases/core/functions.php tests/phpunit/testcases/core/functions.php
index ffcfa19..4060836 100644
--- tests/phpunit/testcases/core/functions.php
+++ tests/phpunit/testcases/core/functions.php
@@ -345,4 +345,42 @@ class BP_Tests_Core_Functions extends BP_UnitTestCase {
 		$this->assertTrue( buddypress()->foo->has_directory );
 		$this->assertNotEmpty( buddypress()->loaded_components['foo'] );
 	}
+
+	/**
+	 * @group bp_core_time_since
+	 * @group bp_core_current_time
+	 */
+	public function test_bp_core_time_since_timezone_right_now() {
+		// backup timezone
+		$tz_backup = date_default_timezone_get();
+
+		// set timezone to something other than UTC
+		date_default_timezone_set( 'Europe/Paris' );
+
+		$this->assertSame( 'right now', bp_core_time_since( time() ) );
+
+		// revert timezone back to normal
+		if ( $tz_backup ) {
+			date_default_timezone_set( $tz_backup );
+		}
+	}
+
+	/**
+	 * @group bp_core_time_since
+	 * @group bp_core_current_time
+	 */
+	public function test_bp_core_time_since_timezone() {
+		// backup timezone
+		$tz_backup = date_default_timezone_get();
+
+		// set timezone to something other than UTC
+		date_default_timezone_set( 'Europe/Paris' );
+
+		$this->assertSame( '1 hour ago', bp_core_time_since( time() - 60*60 ) );
+
+		// revert timezone back to normal
+		if ( $tz_backup ) {
+			date_default_timezone_set( $tz_backup );
+		}
+	}
 }
