code: def to_UNIXtime(timeobject):
      
      if isinstance(timeobject, int):
          if timeobject < 0:
              raise ValueError("The time value is a negative number")
          return timeobject
      elif isinstance(timeobject, datetime):
          return _datetime_to_UNIXtime(timeobject)
      elif isinstance(timeobject, str):
          return _ISO8601_to_UNIXtime(timeobject)
      else:
          raise TypeError('The time value must be expressed either by an int ' \
                           'UNIX time, a datetime.datetime object or an ' \
                           'ISO8601-formatted string')
docs: Returns the UNIXtime corresponding to the time value conveyed by the
      specified object, which can be either a UNIXtime, a
      ``datetime.datetime`` object or an ISO8601-formatted string in the format
      `YYYY-MM-DD HH:MM:SS+00``.
  
      :param timeobject: the object conveying the time value
      :type timeobject: int, ``datetime.datetime`` or ISO8601-formatted
          string
      :returns: an int UNIXtime
      :raises: *TypeError* when bad argument types are provided, *ValueError*
          when negative UNIXtimes are provided