diff --git modules/system/system.api.php modules/system/system.api.php
index 1356dd6..b98d6b1 100644
--- modules/system/system.api.php
+++ modules/system/system.api.php
@@ -3844,12 +3844,31 @@ function hook_date_formats() {
 /**
  * Alter date formats declared by another module.
  *
- * Called by _system_date_format_types_build() to allow modules to alter the
- * return values from implementations of hook_date_formats().
+ * Called by _system_date_formats_build() to allow modules to alter the return
+ * values from implementations of hook_date_formats().
+ *
+ * @param $types
+ *   An associative array of date formats. The top-level keys are the names of
+ *   the date types that the date formats belong to. The values are in turn
+ *   associative arrays keyed by format with the following keys:
+ *   - dfid: The date format ID.
+ *   - format: The PHP date format string.
+ *   - type: The machine-readable name of the date type the format belongs to.
+ *   - locales: An array of language codes. This can include both 2 character
+ *     language codes like 'en and 'fr' and 5 character language codes like
+ *     'en-gb' and 'en-us'.
+ *   - locked: A boolean indicating whether or not this date type should be
+ *     configurable from the user interface.
+ *   - module: The name of the module that defined this format in its
+ *     hook_date_formats(). An empty string if the format was user-defined.
+ *   - is_new: A boolean indicating whether or not this date type is as of yet
+ *     unsaved in the database.
  */
-function hook_date_formats_alter(&$formats) {
-  foreach ($formats as $id => $format) {
-    $formats[$id]['locales'][] = 'en-ca';
+function hook_date_formats_alter(&$types) {
+  foreach ($types as $type => $formats) {
+    foreach ($formats as $format => $value) {
+      $types[$type][$format]['locales'][] = 'en-ca';
+    }
   }
 }
 
