code: def calendar_tuple(jd_float, offset=0.0):
      
      jd_float = _to_array(jd_float)
      whole, fraction = divmod(jd_float + 0.5, 1.0)
      whole = whole.astype(int)
      year, month, day = calendar_date(whole)
      hour, hfrac = divmod(fraction * 24.0, 1.0)
      minute, second = divmod(hfrac * 3600.0, 60.0)
      return year, month, day, hour.astype(int), minute.astype(int), second
docs: Return a (year, month, day, hour, minute, second.fraction) tuple.
  
      The `offset` is added to the time before it is split into its
      components.  This is useful if the user is going to round the
      result before displaying it.  If the result is going to be
      displayed as seconds, for example, set `offset` to half a second
      and then throw away the fraction; if the result is going to be
      displayed as minutes, set `offset` to thirty seconds and then
      throw away the seconds; and so forth.