docs: def timeRange(*args):
      """
      Accepted forms:
  
      * ``timeRange(hour)``
      * ``timeRange(hour1, hour2)``
      * ``timeRange(hour1, min1, hour2, min2)``
      * ``timeRange(hour1, min1, sec1, hour2, min2, sec2)``
      * ``timeRange(hour1, min1, sec1, hour2, min2, sec2, gmt)``
  
      ``hour``
          is the hour from 0 to 23. (0 is midnight, 23 is 11 pm.)
      ``min``
          minutes from 0 to 59.
      ``sec``
          seconds from 0 to 59.
      ``gmt``
          either the string "GMT" for GMT timezone, or not specified, for local timezone.
          Again, even though the above list doesn't show it, this parameter may be present in each of
          the different parameter profiles, always as the last parameter.
  
      :return: True during (or between) the specified time(s).
      :rtype: bool
      """
      gmt_arg_present = (len(args) == 2 and args[1] == 'GMT') or (len(args) % 2 == 1 and len(args) > 1)
      if gmt_arg_present:
          # Remove and handle GMT argument.
          today = _now(args[-1])
          args = args[:-1]
      else:
          today = _now()
  
      num_args = len(args)
      if num_args == 1:
          h1 = args[0]
          return h1 == today.hour
      if num_args == 2:
          h1, h2 = args
          return h1 <= today.hour < h2
      if num_args == 4:
          h1, m1, h2, m2 = args
          return time(h1, m1) <= today.time() <= time(h2, m2)
      if num_args == 6:
          h1, m1, s1, h2, m2, s2 = args
          return time(h1, m1, s1) <= today.time() <= time(h2, m2, s2)
      return False