运行custom "clock"/ DateTime.现在c#

本文关键字:quot 现在 DateTime 运行 clock custom | 更新日期: 2023-09-27 18:10:29

我需要模拟一个相当精确的时钟。我需要一些DateTime。现在,不是针对本地时间,而是针对web服务器的时间(可能与系统时间相差几秒)。

问题是我需要准确,即使是3秒也太大了。任何方法来创建一个DateTime对象,然后"让它运行",所以它显示当前的服务器时间?

PS:不是说时间服务器,而是普通的web服务器。是否可以避免将系统时间设置为服务器时间?

运行custom "clock"/ DateTime.现在c#

DateTime.Now不是很精确,特别是不适合测量时差。"让它运行"表明您实际上想要使用秒表和单独的DateTime作为开始时间。然后,您可以通过添加您的开始时间和Stopwatch的经过时间来生成当前时间戳。

这就是我想出来的:

public class ServerTime
{
    public static DateTime Now
    {
        get
        {
            if (baseTime != null)
                return baseTime.Add(swatch.Elapsed);
            else
                return DateTime.Now;
        }
        set
        {
            baseTime = value;
            swatch.Reset();
            swatch.Start();
        }
    }
    private static DateTime baseTime;
    private static Stopwatch swatch = new Stopwatch();
}

不确定如何处理ServerTime。如果baseTime还没有设置。在设置这个属性之前,我可能永远不会调用它,但一如既往:不要相信自己的代码。