如何设置每个线程的时区? [关闭]

2023-12-23

我知道我们可以更改当前线程的当前文化。 我知道我们无法得到TimeZoneInfo来自CurrentCulture 因为一种文化可能有很多时区 like USA

但要使用同样的技术来处理当前线程的时区.

如果我们能做这样的事情那就太好了:

TimeZone.CurrentTimeZone = TimeZoneInfo.FindSystemTimeZoneById("timezone id");

不幸的是,“当前”时区的任何概念都与运行代码的计算机的操作系统设置相关联。有一些 Win32 api 用于更改时区,但我不建议使用它们。它们不仅不是“线程安全”,而且也不是“进程安全”。时区设置会影响计算机上运行的所有内容。

也就是说,我很好奇你的用例到底是什么。如果您能够为每个线程设置时区,那么您可能根本不依赖本地设置。您也许可以使用上的转换方法TimeZoneInfo反而。

例如,假设您正在查找其他时区的当前时间。您可能正在寻找执行此操作的能力:

using (TimeZone.CurrentTimeZone = ...  )
{
    var now = DateTime.Now;
}

但您应该在适当的情况下简单地从 UTC 进行转换:

var now = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
                       DateTime.UtcNow, "some other timezone id");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置每个线程的时区? [关闭] 的相关文章

随机推荐