首页 > 解决方案 > C# DateTime 如何确定现在和今天的时间

问题描述

在互联网上找不到任何东西,也找不到关于此的文档。C# 从哪里得到它DateTime.NowDateTime.Today从哪里得到它?这些是本地化的值。它是由Windows决定的吗?或者 IIS 会影响这个吗?我想知道究竟是什么将实际时间解析为 C# 以及什么会影响它。


为什么我想知道这个

我有一些奇怪的 API 行为,其中一些东西会提前几个小时返回。这很可能与时区有关。VPS 和客户端在同一个时区,所以我想知道什么会影响这种行为。

我正在努力...FromDate.Date <= DateTime.Today.Date,出于某种原因,我有时会得到明天“来自”的记录。哪里2021-02-21 <= 2021-02-20似乎是“真实的”。真正的意思,DateTime.Today似乎是关闭。仅在晚上 10 点之后看到这种行为,在实际午夜前几个小时,这表明它与时区有关。

如果您对此行为有任何想法,请告诉我

标签: c#datetime

解决方案


感谢@Matthew Watson 帮助我到达这里。

对于未来的任何人

DateTime.Now是从系统接收的。首先它将获取UtcNow然后应用本地偏移量(如果有的话)。

源代码第 1051 行

DateTime.Today物业刚刚返回DateTime.Now.Date

源代码行 1262


UtcNow 由内部外部方法接收GetSystemTimeWithLeapSecondsHandling。我找不到实现。

查看源代码


推荐阅读