【问题标题】:DateTime.UtcNow gives different value in different serverDateTime.UtcNow 在不同的服务器中给出不同的值
【发布时间】:2014-11-18 22:25:06
【问题描述】:

我有一个使用此代码以 UTC 记录日期时间的 dll,即 `DateTime.UtcNow() 我正在运行一个控制台应用程序,该应用程序在两个不同的服务器中使用此 dll。一台服务器位于“复活节时区”,另一台位于“太平洋时区”。现在,当我启动控制台应用程序时,我不断得到两个不同的时间。

例如 复活节时区:2014 年 11 月 18 日晚上 10:14:40 在太平洋时区:2014 年 11 月 18 日晚上 10:13:26
差异:1:14

我首先在 EST 中运行的服务器中启动了控制台应用程序。在两台服务器上启动两个控制台应用程序的时间差只有几秒钟。有谁知道为什么在两个不同的服务器上运行相同的代码时时区 (UTC) 会有如此大的差异?

谢谢。 桑吉夫

【问题讨论】:

  • 1 分 14 秒?听起来您的一台服务器没有正确同步时间。 UtcNow() 使用本地时钟和时区设置,因此请确保本地时钟设置正确
  • 听起来您想将两台服务器同步到 Naval Observatory 时钟,然后运行您的应用程序。

标签: c# .net datetime utc


【解决方案1】:

两台服务器上的系统时钟可能略有不同。

来自规范(强调添加):

获取一个设置为当前日期和时间的 DateTime 对象在此 计算机,表示为协调世界时 (UTC)。

http://msdn.microsoft.com/en-us/library/system.datetime.utcnow(v=vs.110).aspx

【讨论】:

  • 有没有办法让utctime计算机独立?
  • @sanjeev40084:您可以在某处询问单个服务器,并希望它不会撒谎并且网络速度很快。这是一个难题;阅读分布式系统开发。
  • Windows 应该能够与时间服务器同步。您正在运行什么版本的 Windows?
  • 根据服务器安全策略,可能是时间同步功能被阻止或禁用 - 在这种情况下,您可能需要自己同步服务器。
  • 它在 Windows 2003 服务器上运行。我认为在第三台服务器上运行 UTC 代码并在其他两台服务器上从该服务器调用时区可能是更好的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多