TimeZone of CurrentThread

本文关键字:CurrentThread of TimeZone | 更新日期: 2023-09-27 18:20:40

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

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

我想要的是"tzutil"的响应。

有人知道怎么拿到它吗?

TimeZone of CurrentThread

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

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

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

此外,您应该使用TimeZoneInfo类。TimeZone类只允许使用系统的时区或UTC,基本上不推荐使用。要获取当前时区,请调用TimeZoneInfo.Local

您还询问了如何"获得tzutil的响应"。我不确定你的确切意思,但我猜你可能在寻找TimeZoneInfo对象的IdDisplayName属性。