Converti globalmente UTC DateTimes in DateTimes locali specificati dall’utente

Sto memorizzando tutti i campi DateTime come ora UTC. Quando un utente richiede una pagina Web, desidero prendere il fuso orario locale preferito (e non il fuso orario locale della macchina server) e visualizzare automaticamente tutti i campi DateTime in tutti i moduli Web come date locali.

Naturalmente, potrei applicare la conversione su ogni chiamata DateTime.ToString () in ogni forma o implementare qualche utility helper ma è un’attività che richiede molto tempo, e ci sono anche alcuni componenti di terze parti che sono difficili da configurare con i modelli di visualizzazione DateTime personalizzati .

In sostanza, mi piacerebbe che la class DateTime si comporti come segue:

from this moment on for this web request, whenever some code calls DateTime.ToString(), convert it to the local time using the timezone offset given at the very beginning of the web request, but if possible, please keep .NET core library DateTime.ToString() calls intact (I don't want to mess up event logging timestamps etc.) 

C’è modo di farlo?

A proposito, sto usando ASP.NET MVC 4, se è importante.