更改系统时间.NET后重新启动服务

时间:2020-02-20 04:43:20

标签: c# .net

我的示例程序中有以下代码。 我在这里打印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();
        }
    }

1 个答案:

答案 0 :(得分:4)

时区代码已缓存:https://docs.microsoft.com/en-us/dotnet/api/system.timezone.currenttimezone?view=netframework-4.8#notes-to-callers

在首次使用CurrentTimeZone检索时区信息之后,将缓存本地时区数据。如果系统的本地时区随后发生更改,则CurrentTimeZone属性不会反映此更改。如果需要在应用程序运行时处理时区更改,请使用TimeZoneInfo类并调用其ClearCachedData()方法。

相关问题