CurrentThread的TimeZone

时间:2014-09-04 09:14:53

标签: c# timezone terminal-services

正如MSDN所说," TimeZone.CurrentTimeZone"返回当前计算机的时区。我想要的是当前会话/应用程序的时区。

情况:我们有一个带有本地时区A的终端服务器,用户来自时区B到这个服务器。通过其配置文件,将为终端服务器上的应用程序设置时区,但不为整个计算机设置时区。

我想要的是" tzutil"。

的回应

有人知道如何获得它吗?

1 个答案:

答案 0 :(得分:3)

.NET中没有用于设置应用程序,进程,会话或线程的时区的工具。 "当前时区"是由时区控制面板或tzutil为整个系统设置的。

但是,既然您说您关注终端服务会话,我认为您的意思是您正在使用终端服务的time zone redirection功能。在这种情况下,终端服务正在交换或可视化控制当前系统时区的注册表项。因此,当您向.NET询问当前系统时区时,只要您启用了时区重定向功能, 就应该是终端服务控制的。您应该在您的环境中对此进行测试。

通常,如果不涉及终端服务,如果您需要在应用程序中跟踪特定用户的时区,则应为用户提供自己的机制来设置其时区。您可以在应用程序中使用用户的配置文件存储该时区的ID。然后,只要需要将值转换为该时区,就可以使用该ID为用户检索时区。这是Web应用程序和胖客户端/服务器应用程序的常规建议。终端服务有点不同,如上所述。

此外,您应该使用TimeZoneInfo课程。 TimeZone类仅允许使用系统的时区或UTC,并且基本上已弃用。要获取当前时区,请致电TimeZoneInfo.Local

你还问过如何得到tzutil"的响应。我不确定你的意思,但我猜你可能正在寻找Id的{​​{1}}和DisplayName属性对象