diff --git a/sites/all/modules/date/date_api/date_api.module b/sites/all/modules/date/date_api/date_api.module
index d85a8a5..b13af4c 100644
--- a/sites/all/modules/date/date_api/date_api.module
+++ b/sites/all/modules/date/date_api/date_api.module
@@ -500,7 +500,7 @@ class DateObject extends DateTime {
    */
   public function limitGranularity($granularity) {
     foreach ($this->granularity as $key => $val) {
-      if ($val != 'timezone' && !in_array($val, $granularity)) {
+      if ($val != 'timezone' && !in_array($val, $granularity, TRUE)) {
         unset($this->granularity[$key]);
       }
     }
diff --git a/sites/all/modules/date/tests/date_api.test b/sites/all/modules/date/tests/date_api.test
index f50020c..a436b35 100644
--- a/sites/all/modules/date/tests/date_api.test
+++ b/sites/all/modules/date/tests/date_api.test
@@ -363,6 +363,23 @@ class DateAPITestCase extends DrupalWebTestCase {
     $expected = '10:30:00';
     $this->assertEqual($expected, $value, "Test new dateObject($input, $timezone, $format): should be $expected, found $value.");
 
+    // Check that empty granularity parts don't break the limit.
+    $input = '2011-06-11 16:03:10';
+    $timezone = 'UTC';
+    $format = 'Y-m-d H:i:s';
+    $date = new dateObject($input, $timezone, $format);
+    $date->limitGranularity(array(
+      'year' => 'year',
+      'month' => 'month',
+      'day' => 0,
+      'hour' => 'hour',
+      'minute' => 0,
+      'second' => 0,
+    ));
+    $value = $date->format('Y-m-d H:i:s');
+    $expected = '2011-06 16';
+    $this->assertEqual($expected, $value, "Test new dateObject($input, $timezone, $format) with granularity limited to year, month and hour: should be $expected, found $value.");
+
     // Test date ranges.
     $valid = array(
       '-20:+20',
