def reset_segments(segmentA=nil, segmentB=nil)
      if !segmentA
        @segments = [:days, :hours, :minutes, :seconds]
      elsif !segmentB
        case segmentA
        when Array
          @segments = segmentA.map{ |p| (p.to_s.downcase.chomp('s') + 's').to_sym }
          raise ArgumentError unless @segments.all?{ |s| SEGMENTS.include?(s) }
        else
          f = SEGMENTS.index(segmentA)
          @segments = SEGMENTS[f..0]
        end
      else # segmentA && segmentB
        f = SEGMENTS.index(segmentA)
        t = SEGMENTS.index(segmentB)
        @segments = SEGMENTS[f..t]
      end
    end
def reset_segments(segmentA=nil, segmentB=nil)
      if !segmentA
        @segments = [:days, :hours, :minutes, :seconds]
      elsif !segmentB
        case segmentA
        when Array
          @segments = segmentA.map{ |p| (p.to_s.downcase.chomp('s') + 's').to_sym }
          raise ArgumentError unless @segments.all?{ |s| SEGMENTS.include?(s) }
        else
          f = SEGMENTS.index(segmentA)
          @segments = SEGMENTS[f..0]
        end
      else # segmentA && segmentB
        f = SEGMENTS.index(segmentA)
        t = SEGMENTS.index(segmentB)
        @segments = SEGMENTS[f..t]
      end
    end
Reset segments.

   call-seq:
     reset_segments(max-period)
     reset_segments(max-period, min-period)
     reset_segments([period1, period2, ...])