设置/更改.NET应用程序';s时区

设置/更改.NET应用程序';s时区,.net,reflection,timezone,.net,Reflection,Timezone,有没有办法将.NET应用程序的时区设置为操作系统时区以外的值 例如,我在一个设置了中央标准时间的操作系统上使用我的应用程序,我希望该应用程序能够像在东部标准时间一样运行,而不必使用TimeZoneInfo.ConvertTimeBySystemTimeZoneId()之类的方法手动转换我应用程序中的所有日期时间。不,我认为没有任何方法可以做到这一点。不像文化一样,时区是按线程设置的。例如,我相信DateTime.ToLocalTime将始终使用系统时区 但是,我不会在任何地方都使用TimeZon

有没有办法将.NET应用程序的时区设置为操作系统时区以外的值


例如,我在一个设置了中央标准时间的操作系统上使用我的应用程序,我希望该应用程序能够像在东部标准时间一样运行,而不必使用TimeZoneInfo.ConvertTimeBySystemTimeZoneId()之类的方法手动转换我应用程序中的所有日期时间。

不,我认为没有任何方法可以做到这一点。不像文化一样,时区是按线程设置的。例如,我相信DateTime.ToLocalTime将始终使用系统时区

但是,我不会在任何地方都使用
TimeZoneInfo.ConvertTimeBySystemTimeZoneId
。我将公开一个类型为
TimeZoneInfo
的属性,该属性表示适当的时区,或者设置一个助手类,以便在需要时进行转换


根据您的应用程序,您可能会发现,如果您选择了正确的点来转换数据(这并不总是将数据保存在除UI层之外的任何位置的UTC中)您没有预期的那么多转换要执行。

我们最终将TimeZoneInfo.ConvertTimeBySystemTimeZoneId抽象为一个DateTime助手类,因此我们不需要在代码中的任何地方公开“Eastern Standard Time”常量