【问题标题】:Inconsistent results from DateTime.UtcNowDateTime.UtcNow 的结果不一致
【发布时间】:2025-12-30 03:00:06
【问题描述】:

在解决我已签约构建的代码中的问题时,我遇到了来自DateTime.UtcNow 的似乎不一致的结果。在我写这篇文章时,时间似乎在 1/19/2017 7:3x 和 1/20/2017 3:2x 之间波动。

我使用以下代码创建了example on IdeOne;点击“编辑”,然后点击“ideone it!” - 在显示行为之前可能需要运行几次。

using System;

public class Test
{
    public static void Main()
    {
        Console.WriteLine(DateTime.UtcNow);
    }
}

屏幕截图:

有人对此行为有解释吗?

【问题讨论】:

  • 你能定义不一致的结果吗?
  • @ChrisWatts 在上面编辑
  • 除了 IdeOne 之外,您在其他任何地方都见过这种行为吗?他们可能有几台机器编译和运行可以不同配置的代码。
  • @Chrille - 是的;我正在构建的应用程序给出了不正确的验证失败响应,本质上声称 UTC 日期在我的客户端服务器上当前不是 2017/01/19,而不是 IdeOnes。
  • @Chrille 没有“可能”,这正是正在发生的事情。在回答之前我正在检查。 :)

标签: c# datetime utc


【解决方案1】:

Ideone 使用多个服务器,您的程序并不总是在同一个服务器上运行。其中一台服务器的系统时钟设置不正确。

您自己的服务器同样可能将其系统时钟设置不正确,从而在请求时间时导致同样的问题。

【讨论】:

  • 好主意 - 想知道在我运行实时测试时是否有人在玩弄设置...
  • 我不认为这个问题意味着有人在玩弄设置,而是不同的服务器正在响应您的请求。
  • 通过使用Console.WriteLine(System.Diagnostics.Stopwatch.GetTimestamp()); 写出系统计时器的值,您可以看到它也给出了非常不同的值,这意味着您正在处理已运行不同时间的不同系统.