【发布时间】:2021-02-19 10:35:57
【问题描述】:
在互联网上找不到任何东西,也找不到有关此的文档。 C# 从哪里得到DateTime.Now 或DateTime.Today?这些是本地化的值。它是由Windows决定的吗?或者 IIS 会影响这个吗?我想知道究竟是什么将实际时间解析为 C# 以及什么会影响它。
为什么我想知道这个
我遇到了一些奇怪的 API 行为,有些东西会提前几个小时返回。这很可能与时区有关。 VPS 和客户端在同一个时区,所以我想知道什么会影响这种行为。
我正在努力 ...FromDate.Date <= DateTime.Today.Date 并且出于某种原因,我有时会得到明天“来自”的记录。 2021-02-21 <= 2021-02-20 似乎是“真实的”。真正的意思是DateTime.Today 似乎已关闭。仅在晚上 10 点之后才看到这种行为,在实际午夜前几个小时,这表明它与时区有关。
如果您对此行为有任何想法,请告诉我
【问题讨论】:
-
它通过Windows API调用使用PC上的RTC(可能通过调用
GetSystemTime()) -
@MatthewWatson 这是否意味着 C# 本地现在时间应该始终与您在右下角看到的 Windows 时间相同。开箱即用的设置不会改变任何东西
-
调用宿主机相关操作系统API。
-
是的,
Console.WriteLine(DateTime.Now)应该是一样的。 -
DateTime.Kind is ignored on comparisons,所以它似乎问题在于您的
FromDate,而不是DateTime.Today。我可以建议记录这两个值以找出原因吗?