正如MSDN所说,"TimeZone.CurrentTimeZone“返回当前计算机的时区。我想要的是当前会话/应用程序的时区。
情况:我们有一个带有本地时区A的终端服务器,用户从时区B到这个服务器。通过它的概要文件,将为终端服务器上的应用程序设置时区,而不是为整个计算机设置时区。
我想要的是“卷饼”的反应。
有人知道怎么弄吗?
发布于 2014-09-04 16:35:11
.NET中没有设置应用程序、进程、会话或线程时区的功能。“当前时区”是整个系统的时区控制面板或tzutil设置的时区。
但是,既然您说您关注终端服务会话,那么我假设您是在使用终端服务的时区重定向功能。在这种情况下,终端服务正在交换或可视化控制当前系统时区的注册表项。因此,当您向.NET请求当前系统时区时,只要启用了时区重定向功能,它就应该是由终端服务控制的时区时区。您应该在您的环境中对此进行测试。
通常,在不涉及终端服务的情况下,如果您需要跟踪应用程序中特定用户的时区,您应该为用户提供自己的设置时区的机制。您将在应用程序中存储该时区的ID和用户的配置文件。然后,当需要将值转换为时区时,您将使用该ID为用户检索时区。这是web应用程序和厚客户机/服务器应用程序的正常建议。正如上面所解释的,终端服务有点不同。
另外,您应该使用TimeZoneInfo类。TimeZone类只允许使用系统的时区或UTC,基本上是不推荐的。要获取当前时区,请调用TimeZoneInfo.Local。
你还问了如何“得到卷饼的反应”。我不清楚这到底是什么意思,但我猜您可能是在寻找Id和DisplayName对象的TimeZoneInfo属性。
https://stackoverflow.com/questions/25661574
复制相似问题