def sub_days(number)
      o = dup
      while number > 0
        if (o.day - 1) >= number
          o.date = ZDate.format_date(o.year_str, o.month_str, o.day - number)
          number = 0
        else
          number -= o.day
          o.decrement_month!
        end
      end
      o
    end
def sub_days(number)
      o = dup
      while number > 0
        if (o.day - 1) >= number
          o.date = ZDate.format_date(o.year_str, o.month_str, o.day - number)
          number = 0
        else
          number -= o.day
          o.decrement_month!
        end
      end
      o
    end
sub_ methods return new ZDate object, they do not modify self.