docs: def check_time_coordinate(self, ds):
          '''
          Check variables defining time are valid under CF
  
          CF §4.4 Variables representing time must always explicitly include the
          units attribute; there is no default value.
  
          The units attribute takes a string value formatted as per the
          recommendations in the Udunits package.
  
          The acceptable units for time are listed in the udunits.dat file. The
          most commonly used of these strings (and their abbreviations) includes
          day (d), hour (hr, h), minute (min) and second (sec, s). Plural forms
          are also acceptable. The reference time string (appearing after the
          identifier since) may include date alone; date and time; or date, time,
          and time zone. The reference time is required. A reference time in year
          0 has a special meaning (see Section 7.4, "Climatological Statistics").
  
          Recommend that the unit year be used with caution. It is not a calendar
          year.  For similar reasons the unit month should also be used with
          caution.
  
          A time coordinate is identifiable from its units string alone.
          Optionally, the time coordinate may be indicated additionally by
          providing the standard_name attribute with an appropriate value, and/or
          the axis attribute with the value T.
  
          :param netCDF4.Dataset ds: An open netCDF dataset
          :rtype: list
          :return: List of results
          '''
  
          ret_val = []
          for name in cfutil.get_time_variables(ds):
              variable = ds.variables[name]
              # Has units
              has_units = hasattr(variable, 'units')
              if not has_units:
                  result = Result(BaseCheck.HIGH,
                                  False,
                                  self.section_titles['4.4'],
                                  ['%s does not have units' % name])
                  ret_val.append(result)
                  continue
              # Correct and identifiable units
              result = Result(BaseCheck.HIGH,
                              True,
                              self.section_titles['4.4'])
              ret_val.append(result)
              correct_units = util.units_temporal(variable.units)
              reasoning = None
              if not correct_units:
                  reasoning = ['%s does not have correct time units' % name]
              result = Result(BaseCheck.HIGH,
                              correct_units,
                              self.section_titles['4.4'],
                              reasoning)
              ret_val.append(result)
  
          return ret_val