[英]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.