¿Qué hace IFormatProvider?

Estaba jugando con el método Datetime.ParseExact, y quiere un IFormatProvider ... Funciona ingresando nulo, pero ¿qué hace exactamente?