繁体   English   中英

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

[英]C# entity datetime returns date but time is always 00:00:00

当我查看数据库时,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)) {
    ...
}

可能会短路的正弦波。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM