def subtract( self, time ): if isinstance( time, RPNMeasurement ): kneg = RPNMeasurement( fneg( time.getValue( ) ), time.getUnits( ) ) return self.add( kneg ) elif isinstance( time, RPNDateTime ): if self > time: delta = self - time factor = 1 else: delta = time - self factor = -1 if delta.days != 0: result = RPNMeasurement( delta.days * factor, 'day' ) result = result.add( RPNMeasurement( delta.seconds * factor, 'second' ) ) result = result.add( RPNMeasurement( delta.microseconds * factor, 'microsecond' ) ) elif delta.seconds != 0: result = RPNMeasurement( delta.seconds * factor, 'second' ) result = result.add( RPNMeasurement( delta.microseconds * factor, 'microsecond' ) ) else: result = RPNMeasurement( delta.microseconds * factor, 'microsecond' ) return result else: raise ValueError( 'incompatible type for subtracting from an absolute time' )