diff --git c/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php w/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php
index 9673c9c..0d8571a 100644
--- c/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php
+++ w/core/modules/system/lib/Drupal/system/Tests/Datetime/DrupalDateTimeTest.php
@@ -37,6 +37,15 @@ public function setUp() {
   }
 
   /**
+   * Test that the AJAX Timezone Callback can deal with various formats.
+   */
+  public function testSystemTimezone() {
+    // Query the AJAX Timezone Callback with a long-format date.
+    $response = $this->drupalGet('system/timezone/BST/3600/1?date=Tue+Sep+17+2013+21%3A35%3A31+GMT%2B0100+(BST)#');
+    $this->assertEqual($response, '"Europe\/London"', 'Timezone AJAX callback successfully identifies and responds to a long-format date.');
+  }
+
+  /**
    * Test that DrupalDateTime can detect the right timezone to use.
    * Test with a variety of less commonly used timezone names to
    * help ensure that the system timezone will be different than the
diff --git c/core/modules/system/system.routing.yml w/core/modules/system/system.routing.yml
index 508d59c..4867e42 100644
--- c/core/modules/system/system.routing.yml
+++ w/core/modules/system/system.routing.yml
@@ -344,9 +344,12 @@ system.modules_uninstall_confirm:
     _permission: 'administer modules'
 
 system.timezone:
-  path: '/system/timezone'
+  path: '/system/timezone/{abbreviation}/{offset}/{is_daylight_saving_time}'
   defaults:
     _controller: '\Drupal\system\Controller\TimezoneController::getTimezone'
+    abbreviation: ''
+    offset: -1
+    is_daylight_saving_time: NULL
   requirements:
     _access: 'TRUE'
 
