def has_time_expired(self, cache_time, last_answer_time, lower_bound, expiration_factor):
        cache_timedelta = cache_time - last_answer_time
        if cache_timedelta > timedelta(days=365):
            return False
        if cache_timedelta < timedelta(hours=lower_bound):
            return False
        return cache_timedelta < expiration_factor * (datetime.now() - cache_time)