code: def jd2dt(jd):
      
      n = int(round(float(jd)))
      a = n + 32044
      b = (4*a + 3)//146097
      c = a - (146097*b)//4
      d = (4*c + 3)//1461
      e = c - (1461*d)//4
      m = (5*e + 2)//153
      day = e + 1 - (153*m + 2)//5
      month = m + 3 - 12*(m//10)
      year = 100*b + d - 4800 + m/10
      
      tfrac = 0.5 + float(jd) - n
      tfrac_s = 86400.0 * tfrac 
      minfrac, hours = np.modf(tfrac_s / 3600.)
      secfrac, minutes = np.modf(minfrac * 60.)
      microsec, seconds = np.modf(secfrac * 60.)
  
      return datetime(year, month, day, int(hours), int(minutes), int(seconds), int(microsec*1E6))
docs: Convert julian date to datetime