Error getting time_coverage attributes as non-ISO
The attached dataset gets an error from ACDD 1.3
[b5km_baa-max-7d_20160101.nc.zip](https://github.com/ioos/compliance-checker/files/754780/b5km_baa-max-7d_20160101.nc.zip)


```
time_coverage_extents_match            :2:     0/ 1 : time_coverage variables
                                                      are not formatted
                                                      properly. Please ensure
                                                      they are valid ISO-8601
                                                      time strings

```
diff --git a/compliance_checker/acdd.py b/compliance_checker/acdd.py
index 1987482..e14e920 100644
--- a/compliance_checker/acdd.py
+++ b/compliance_checker/acdd.py
@@ -452,7 +452,7 @@ class ACDDBaseCheck(BaseCheck):
         if not (hasattr(ds, 'time_coverage_start') and hasattr(ds, 'time_coverage_end')):
             return
 
-        # allows non-ISO 8601 formatted dates
+        # Parse the ISO 8601 formatted dates
         try:
             t_min = dateparse(ds.time_coverage_start)
             t_max = dateparse(ds.time_coverage_end)
@@ -460,7 +460,7 @@ class ACDDBaseCheck(BaseCheck):
             return Result(BaseCheck.MEDIUM,
                           False,
                           'time_coverage_extents_match',
-                          ['time_coverage variables are not formatted properly. Please ensure they are valid ISO-8601 time strings'])
+                          ['time_coverage attributes are not formatted properly. Use the ISO 8601:2004 date format, preferably the extended format.'])
 
         timevar = cfutil.get_time_variable(ds)
 
diff --git a/compliance_checker/tests/test_acdd.py b/compliance_checker/tests/test_acdd.py
index d5883d7..65b2416 100644
--- a/compliance_checker/tests/test_acdd.py
+++ b/compliance_checker/tests/test_acdd.py
@@ -416,3 +416,26 @@ class TestACDD1_3(BaseTestCase):
 
         result = self.acdd.check_vertical_extents(self.ds)
         self.assert_result_is_good(result)
+
+    def test_time_extents(self):
+        '''
+        Test that the time extents are being checked
+        '''
+        result = self.acdd.check_time_extents(self.ds)
+        self.assert_result_is_good(result)
+
+        empty_ds = Dataset(os.devnull, 'w', diskless=True)
+        self.addCleanup(empty_ds.close)
+
+        # The dataset needs at least one variable to check that it's missing
+        # all the required attributes.
+        empty_ds.createDimension('time', 1)
+        time_var = empty_ds.createVariable('time', 'float32', ('time',))
+        time_var.units = 'seconds since 1970-01-01 00:00:00 UTC'
+        time_var[:] = [1451692800]  # 20160102T000000Z in seconds since epoch
+        empty_ds.time_coverage_start = '20160102T000000Z'
+        empty_ds.time_coverage_end = '20160102T000000Z'
+
+
+        result = self.acdd.check_time_extents(empty_ds)
+        self.assert_result_is_good(result)
diff --git a/compliance_checker/tests/test_util.py b/compliance_checker/tests/test_util.py
index 0d55de6..a18d576 100644
--- a/compliance_checker/tests/test_util.py
+++ b/compliance_checker/tests/test_util.py
@@ -19,9 +19,35 @@ class TestUtils(unittest.TestCase):
         """
         good_datetime = '2011-01-21T02:30:11Z'
         self.assertTrue(util.datetime_is_iso(good_datetime)[0])
+
+        good_date = '2017-02-01'
+        self.assertTrue(util.datetime_is_iso(good_date)[0])
+
+        good_date = '20170201'
+        self.assertTrue(util.datetime_is_iso(good_date)[0])
+
+        good_datetime = '2017-09-19T23:06:17+00:00'
+        self.assertTrue(util.datetime_is_iso(good_datetime)[0])
+
+        good_datetime = '20170919T230617Z'
+        self.assertTrue(util.datetime_is_iso(good_datetime)[0])
+
+        good_date = '2017-W38'
+        self.assertTrue(util.datetime_is_iso(good_date)[0])
+
+        good_date = '2017-W38-2'
+        self.assertTrue(util.datetime_is_iso(good_date)[0])
+
+        good_date = '2017-262'
+        self.assertTrue(util.datetime_is_iso(good_date)[0])
+
         # we need to fail on non-ISO 8601 compliant dates
         bad_datetime = '21 Dec 2015 10:02 PM'
         self.assertFalse(util.datetime_is_iso(bad_datetime)[0])
 
-        good_date = '2017-02-01'
-        self.assertTrue(util.datetime_is_iso(good_date))
+        # Month first is not ISO-8601 compliant
+        bad_datetime = '09192017T230617Z'
+        self.assertFalse(util.datetime_is_iso(bad_datetime)[0])
+
+        bad_date = '09192017'
+        self.assertFalse(util.datetime_is_iso(bad_datetime)[0])
diff --git a/compliance_checker/util.py b/compliance_checker/util.py
index ce724cc..671f0d8 100644
--- a/compliance_checker/util.py
+++ b/compliance_checker/util.py
@@ -2,7 +2,7 @@
 General purpose utility functions to aid in compliance checking tasks
 """
 import isodate
-import arrow
+import pendulum
 
 
 def isstring(obj):
@@ -12,26 +12,24 @@ def isstring(obj):
         return isinstance(obj, str)
 
 
-def datetime_is_iso(dt):
+def datetime_is_iso(date_str):
     """Attempts to parse a date formatted in ISO 8601 format"""
     try:
-        if len(dt) > 10:
-            isodate.parse_datetime(dt)
+        if len(date_str) > 10:
+            dt = isodate.parse_datetime(date_str)
         else:
-            isodate.parse_date(dt)
+            dt = isodate.parse_date(date_str)
         return True, []
-    except isodate.ISO8601Error:
+    except:  # Any error qualifies as not ISO format
         return False, ['Datetime provided is not in a valid ISO 8601 format']
 
 
 def dateparse(date_str):
     '''
-    Returns a datetime string parsed from an ISO-8601 input
+    Returns a naive datetime. parsed from an ISO-8601 input string
 
     :param str date_str: An ISO-8601 string
     '''
-    if isstring(date_str):
-        if date_str.endswith('+00'):
-            date_str = date_str.replace('+00', 'Z')
-    arrow_obj = arrow.get(date_str)
-    return arrow_obj.to('utc').naive
+
+    return pendulum.parse(date_str)
+
diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml
index ca16f31..b81077e 100644
--- a/conda.recipe/meta.yaml
+++ b/conda.recipe/meta.yaml
@@ -19,7 +19,6 @@ requirements:
   run:
     - python
     - setuptools
-    - arrow
     - cf_units
     - isodate
     - jinja2
@@ -28,6 +27,7 @@ requirements:
     - pygeoif
     - regex 2017.07.28
     - requests
+    - pendulum
 
 test:
   source_files:
diff --git a/requirements.txt b/requirements.txt
index d140645..cd6b5da 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,4 +8,4 @@ setuptools>=15.0
 pygeoif>=0.6
 netCDF4>=1.2.2
 regex==2017.07.28
-arrow>=0.7.0
+pendulum>=1.2.4
['compliance_checker/util.py', 'conda.recipe/meta.yaml', 'compliance_checker/tests/test_acdd.py', 'compliance_checker/tests/test_util.py', 'requirements.txt', 'compliance_checker/acdd.py']