Is here a way to change timezone setting for a request, for example, at Application_AcquireRequestState
then for the whole request, no matter when I use Datetime.ToLocalTime (or new Datetime() etc), a local time version will be shown to current user/request?
(or I have to setup timezone for everytime I use ToLocalTime )
You need to manage TimeZone info using thread context/storage. There is no 1:1 mapping from Culture to TimeZone (it’s a many:many relationship) (Reference Post). There are many ways to do this – such as using a custom ThreadPrincipal with context members or Thread Local Storage (TLS)