本地机器上的 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/
请注意用户可以在客户端修改日期,因此如果您需要验证关键功能的日期,您应该在服务器端进行此验证。
我知道这可能是一个简单的问题,但我不确定如何解决它。
当我 运行 这段代码在我的本地机器上
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/
请注意用户可以在客户端修改日期,因此如果您需要验证关键功能的日期,您应该在服务器端进行此验证。