我的示例程序中有以下代码。 我在这里打印DateTime.Now每隔1秒。 现在之间,如果我将系统时间更改为另一个时区,则DateTime.Now仅采用旧值。 为什么会这样呢?当我重新启动服务时,新的DateTime将被反映。有人可以解释一下吗?程序运行时,我正在Windows日期时间UI中手动更改系统的时区。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
for (int i = 0; i < 50; i++)
{
Console.WriteLine(DateTime.Now);
Thread.Sleep(1000);
}
Console.ReadLine();
}
}
答案 0 :(得分:4)
在首次使用CurrentTimeZone检索时区信息之后,将缓存本地时区数据。如果系统的本地时区随后发生更改,则CurrentTimeZone属性不会反映此更改。如果需要在应用程序运行时处理时区更改,请使用TimeZoneInfo类并调用其ClearCachedData()方法。