code: def parse(self, data):
          '''
          Parse the passed in data into a UDF Timestamp.
          Parameters:
           data - The data to parse.
          Returns:
           Nothing.
          '''
          if self._initialized:
              raise pycdlibexception.PyCdlibInternalError('UDF Timestamp already initialized')
          (tz, timetype, self.year, self.month, self.day, self.hour, self.minute,
           self.second, self.centiseconds, self.hundreds_microseconds,
           self.microseconds) = struct.unpack_from(self.FMT, data, 0)
          self.timetype = timetype >> 4
          def twos_comp(val, bits):
              '''
              Compute the 2's complement of int value val
              '''
              if (val & (1 << (bits - 1))) != 0:
                  val = val - (1 << bits)
              return val
          self.tz = twos_comp(((timetype & 0xf) << 8) | tz, 12)
          if self.tz < -1440 or self.tz > 1440:
              if self.tz != -2047:
                  raise pycdlibexception.PyCdlibInvalidISO('Invalid UDF timezone')
          if self.year < 1 or self.year > 9999:
              raise pycdlibexception.PyCdlibInvalidISO('Invalid UDF year')
          if self.month < 1 or self.month > 12:
              raise pycdlibexception.PyCdlibInvalidISO('Invalid UDF month')
          if self.day < 1 or self.day > 31:
              raise pycdlibexception.PyCdlibInvalidISO('Invalid UDF day')
          if self.hour < 0 or self.hour > 23:
              raise pycdlibexception.PyCdlibInvalidISO('Invalid UDF hour')
          if self.minute < 0 or self.minute > 59:
              raise pycdlibexception.PyCdlibInvalidISO('Invalid UDF minute')
          if self.second < 0 or self.second > 59:
              raise pycdlibexception.PyCdlibInvalidISO('Invalid UDF second')
          self._initialized = True