【发布时间】:2013-03-18 22:14:02
【问题描述】:
我知道我们可以更改当前线程的当前文化。
而且我知道我们无法从CurrentCulture 得到TimeZoneInfo 因为一种文化可能有很多时区 比如美国
但是要使用相同的技术来处理当前线程的时区。
如果我们能做出这样的东西那就太好了:
TimeZone.CurrentTimeZone = TimeZoneInfo.FindSystemTimeZoneById("timezone id");
【问题讨论】:
-
我们不是 .NET 网站所需的功能,我们是可靠问题网站的可靠答案。时区处理在最好的情况下并非易事,增加每个线程时区的复杂性层只是自找麻烦
-
@Petesh 我并不是要问为什么。我想知道这是否可能以某种方式。
-
没有什么能阻止你为时区创建线程本地对象,只是除了你的代码之外没有任何东西会使用它。您应该查看 .NET 中的
ThreadLocal<T>Class 以了解实现它的简单方法。 -
我正在为一些我不控制对 DateTime.Now 的调用的代码编写单元测试,因此我想这样做。正如提问者所提到的,在运行测试的当前线程上切换文化是一种非常常见的技术,为什么你不能对时区信息做同样的事情呢? (我希望你能做到。)
标签: c# .net multithreading datetime timezone