运行自定义“时钟”/ DateTime.now c#

时间:2015-08-30 14:17:34

标签: c# datetime clock

我需要模拟一个相当精确的时钟。我需要某种DateTime.Now,不是本地时间,而是Web服务器的时间(可能与系统时间相差几秒)。

事情是我需要准确,即使3秒也是太过分了。 有没有办法创建一个DateTime对象,然后“让它运行”,以便它显示当前的服务器时间?

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

2 个答案:

答案 0 :(得分:2)

DateTime.Now不是很准确,尤其不适用于测量时差。 »让它运行«建议你实际上想要使用Stopwatch和单独的DateTime作为开始时间。然后,您只需添加Stopwatch的开始时间和已用时间即可生成当前时间戳。

答案 1 :(得分:0)

所以这就是我想出来的:

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();

}

如果尚未设置baseTime,则不确定如何处理ServerTime.Now。 我可能永远不会在它被设置之前调用它,但是一如既往:不要相信你自己的代码。