def __add__(self,o): other = Duration(o,"DURATION") if not other.valid(): return Duration(0,"DURATION") print self.utc_seconds(), other.seconds() seconds = self.utc_seconds() + other.seconds() new = Time(seconds,self.name(),self.timezone()) return new
def __sub__(self, o): if isinstance(o, Time): # Subtract a time from this time and return a duration seconds = self.utc_seconds() - o.utc_seconds() return Duration(seconds) elif isinstance(o, Duration): # Subtract a duration from this time and return a time other = Duration(o) if (not other.valid()): return Time() seconds = self.utc_seconds() - other.seconds() return Time(seconds) else: raise TypeError, "subtraction with Time reqires Time or Duration"
def __sub__(self,o): if isinstance(o,Time): # Subtract a time from this time and return a duration seconds = self.utc_seconds() - other.utc_seconds() return Duration(seconds) elif isinstance(o,Duration): # Subtract a duration from this time and return a time other = Duration(o) if(not other.valid()): return Time() seconds = self.utc_seconds() - other.seconds() return Time(seconds) else: raise TypeError, "subtraction with Time reqires Time or Duration"
def duration(self,v=None): """ Return or set the duration of the period. The duration may be expressed as an RFC2445 format string or an instance of Duration. The return value is an instance of Duration. If the period has an end time set, but not a duration, this method will calculate the duration from the end time. """ if(v != None): if isinstance(t,Duration): d = v elif isinstance(t,StringType) or isinstance(t,IntType): d = Duration(v) else: raise TypeError if(self._end_is_time()): start = icaltime_as_timet(icalperiodtype_start_get(self.pt)) end = start + d.seconds() icalperiodtype_end_set(self.pt,icaltime_from_timet(end,0)) else: icalperiodtype_duration_set(self.pt,d.dur) if(self._end_is_time()): start =icaltime_as_timet(icalperiodtype_start_get(self.pt)) end = icaltime_as_timet(icalperiodtype_end_get(self.pt)) print "End is time " + str(end-start) return Duration(end-start,"DURATION") elif(self._end_is_duration()): dur = icaldurationtype_as_int( icalperiodtype_duration_get(self.pt)) return Duration(dur,"DURATION") else: return Duration(0,"DURATION")
#!/usr/bin/env python