def __calcsince(self, dtime): """ Function to calculate the time difference from the last request to the current time. Express a datetime.timedelta using a phrase such as "1 hour, 20 minutes". """ # Create a timedelta from the datetime.datetime and the current time self.td = datetime.datetime.now() - dtime self.pieces = [] if self.td.days: self.pieces.append(self.__plural(self.td.days, 'day')) self.minutes, self.seconds = divmod(self.td.seconds, 60) self.hours, self.minutes = divmod(self.minutes, 60) if self.hours: self.pieces.append(self.__plural(self.hours, 'hour')) if self.minutes or len(self.pieces) == 0: self.pieces.append(self.__plural(self.minutes, 'minute')) # GUI call self.labelTime.set_text("Time: " + ", ".join(self.pieces) + " ago") def __plural(self, count, singular): """ This is a helper function for __calcsince that handles english plural translations """ # This is the simplest version; a more general version # should handle -y -> -ies, child -> children, etc. return '%d %s%s' % (count, singular, ("", 's')[count != 1])