gpt4 book ai didi

C# 实体日期时间返回日期但时间始终为 00 :00:00

转载 作者:行者123 更新时间:2023-12-03 23:18:34 24 4
gpt4 key购买 nike

当我查看我的数据库时,Connections 表的 Date 字段(类型为 DateTime)的值为 2012-03-01 01:49:02.097。

但是当我想检查用户是否在过去一小时内连接时:

if (user.Connections.Max(t => t.Date).Date.AddHours(1) > DateTime.Now)

日期的时间部分始终为零。

所以我的代码只能在午夜和早上 1 小时之间工作哈哈!

感谢您的帮助!

最佳答案

这里的.Date有两种含义,容易造成混淆;这里:

t => t.Date

这意味着“访问名为 Date 的成员,一个 DateTime”;所以在这里:

.Max(t => t.Date)

这意味着“找到所有 Date 成员的最大值,DateTime

但是!这:

).Date.A
^^^^^

表示“获取此值的仅限日期部分”(任何 DateTime 都有一个 .Date 成员,它是值的仅限日期部分);所以是的:到午夜,然后你加一个小时。所以;不要那样做!你想要的可能是:

if (user.Connections.Max(t => t.Date).AddHours(1) > DateTime.Now)

或者更有效:

var cutoff = DateTime.Now.AddHours(-1);
if (user.Connections.Any(t => t.Date > cutoff)) {
...
}

可以短路的正弦波。

关于C# 实体日期时间返回日期但时间始终为 00 :00:00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com