code: def get_utm_epsg(longitude, latitude, crs=None):
      
      if crs is None or crs.authid() == 'EPSG:4326':
          epsg = 32600
          if latitude < 0.0:
              epsg += 100
          epsg += get_utm_zone(longitude)
          return epsg
      else:
          epsg_4326 = QgsCoordinateReferenceSystem('EPSG:4326')
          transform = QgsCoordinateTransform(
              crs, epsg_4326, QgsProject.instance())
          geom = QgsGeometry.fromPointXY(QgsPointXY(longitude, latitude))
          geom.transform(transform)
          point = geom.asPoint()
          # The point is now in 4326, we can call the function again.
          return get_utm_epsg(point.x(), point.y())
docs: Return epsg code of the utm zone according to X, Y coordinates.
  
      By default, the CRS is EPSG:4326. If the CRS is provided, first X,Y will
      be reprojected from the input CRS to WGS84.
  
      The code is based on the code:
      http://gis.stackexchange.com/questions/34401
  
      :param longitude: The longitude.
      :type longitude: float
  
      :param latitude: The latitude.
      :type latitude: float
  
      :param crs: The coordinate reference system of the latitude, longitude.
      :type crs: QgsCoordinateReferenceSystem