diff --git a/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php b/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php
index 5539a61..aab2f6d 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php
@@ -26,7 +26,7 @@ public static function getInfo() {
   /**
    * Set up required modules.
    */
-  public static $modules = array();
+  public static $modules = array('system_test');
 
   /**
    * Test setup.
@@ -107,4 +107,28 @@ public function testDateTimezone() {
 
 
   }
+
+  /**
+   * Test hook_format_date_alter() function and format_date() function.
+   */
+  function testFormatDate() {
+    // Setup date/time settings for Honolulu time.
+    $config = config('system.date')
+      ->set('timezone.default','Pacific/Honolulu')
+      ->set('timezone.user.configurable',0)
+      ->set('formats.medium.pattern.php', 'Y-m-d H:i:s O')
+      ->save();
+
+    // Create some nodes with different authored-on dates.
+    $date1 = '2007-01-31 21:00:00 -1000';
+    $date2 = '2007-07-31 21:00:00 -1000';
+    $node1 = $this->drupalCreateNode(array('created' => strtotime($date1), 'type' => 'article'));
+    $node2 = $this->drupalCreateNode(array('created' => strtotime($date2), 'type' => 'article'));
+
+    // Confirm date format was changed by implemented hook function.
+    $this->drupalGet("node/$node1->nid");
+    $this->assertText('0001- 00:00:12 13-10-7002', 'Date was reversed successfully.');
+    $this->drupalGet("node/$node2->nid");
+    $this->assertText('0001- 00:00:12 13-70-7002', 'Date was reversed successfully.');
+  }
 }
diff --git a/core/modules/system/tests/modules/system_test/system_test.module b/core/modules/system/tests/modules/system_test/system_test.module
index e833ba7..17805dd 100644
--- a/core/modules/system/tests/modules/system_test/system_test.module
+++ b/core/modules/system/tests/modules/system_test/system_test.module
@@ -386,3 +386,11 @@ function system_test_authorize_init_page($page_title) {
   system_authorized_init('system_test_authorize_run', drupal_get_path('module', 'system_test') . '/system_test.module', array(), $page_title);
   drupal_goto($authorize_url);
 }
+
+/**
+ * Implements hook_format_date_alter().
+ */
+function system_test_format_date_alter(&$formatted_date, array $context) {
+  // Reverse the date string for testing purpose.
+  $formatted_date = strrev($formatted_date);
+}
