本地机器上的 DateTime 与 Azure 不同

DateTime on local machine is different then Azure

我知道这可能是一个简单的问题,但我不确定如何解决它。

当我 运行 这段代码在我的本地机器上

if (someDateTime < DateTime.Now)
   // do something

'DateTime.Now' 给我时区的当前日期时间,但是当我 运行 它在 Azure 中时 'DateTime.Now' 给我一个不同的时间

例如。本地机器说 12:00AM 而 Azure 说 8:13AM

我需要做什么才能将时间 'someDAteTime' 与我网站上用户的时间(his/her 当前 DateTime.Now)进行比较?

那个 DateTime 实例上应该有一个 Utc() 方法,每种编程语言都有类似的东西,因为可能是 Atari。

如果这是 .NET (Full/Core),只需使用 DateTime.UtcNow。 更多相关信息——
What is the difference between DateTime.UtcNow and DateTime.Now.ToUniversalTime()

这里的本质是您始终将 UTC 时间与 UTC 时间进行比较,而忽略时区偏移。此外,所有 Azure 服务 report time in UTC "out of the box".

我假设您在客户端使用 javascript。

如果您想比较日期,您应该始终使用 ISO 日期(https://en.wikipedia.org/wiki/ISO_8601)with 时区。

您可以使用这个库来使用不同的时区:https://momentjs.com/timezone/

和这个用于比较日期的库: https://momentjs.com/

请注意用户可以在客户端修改日期,因此如果您需要验证关键功能的日期,您应该在服务器端进行此验证。