【问题标题】:DateTime and UniversalTime日期时间和通用时间
【发布时间】:2012-09-13 17:38:24
【问题描述】:

我对 .net 的 DateTime 组件感到困惑。服务器以 UTC +4 运行,我的客户端位于不同的时区。所以服务器上的时间是UTC+4模式。我已经尝试将其转换为 UniversalTime 并在将其发送到客户端之前将其发送到 ToBinary,但在客户端机器上代码看起来像

if ((Program.license.EndDate.ToUniversalTime() 
    - DateTime.Now.ToUniversalTime()).TotalMinutes <= 5)
{ 
    //dosomething 
}

还是出错了。

感谢您的帮助。

【问题讨论】:

  • 是 web 还是 winforms 应用程序?
  • 您是否使用服务器的本地时区存储 Program.license.EndDate?还是您将其存储为UTC?如果您要与之比较,我会将其存储为 UTC。然后您可以在客户端使用 DateTime.UtcNow 来获取 UTC 的本地时间以进行比较。

标签: c# .net timezone


【解决方案1】:

您必须知道从客户端发送的 DateTime 的 DateType(本地、通用或未指定)。如果您尝试将 Unspecified 类型转换为通用类型,据我了解,它将作为本地时间处理。 (如果我错了,请有人纠正我。)

服务器/客户端日期和时间的最佳做法是始终使用 UTC。在 .Net 中使用 DateTime.UtcNow 而不是 DateTime.Now.ToUniversalTime()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多