显示不超过6个月(180天)的物品的正确方法是什么?我正在使用以下代码,但它似乎正在显示不符合标准的项目。
DateTime.Now.Subtract(Convert.ToDateTime(e.DateCreated)).Days <= 180
我哪里可能出错?
修改
感谢大家的帮助。原来小时是决定物品年龄的关键因素。我真的不需要它准确到小时,直到约会。
答案 0 :(得分:4)
我只想用这个来约会六个月前
var sixMonthsAgo = DateTime.Now.AddDays(-180);
然后将其与您想要比较的任何内容进行比较。我想
if (Convert.ToDateTime(e.DateCreated) >= sixMonthsAgo)
在你的情况下。
修改强>
我使用评论中提供的测试值进行了测试。
var input = DateTime.Parse("2013-06-23 18:14:47.937");
我目前的日期 21.12.2013 ,时间约为上午11:00 。
根据定义,您的代码会产生结果
180.16:39 ...
所以它仍然符合您的要求,因为它正好是180天之久+几小时和几分钟。
我的代码产生结果
2013年6月24日上午11点左右
并且由于您的日期 23.6。,因此它比结果旧,因此无法满足您的要求。
如你所见,时间在这里发挥了重要作用。所以最终,它在很大程度上取决于你如何定义“180天前”。如果您仍然认为这两种变体都不能很好地运作,那么请至少给我10天的比较,无论它在哪里工作,哪里都不起作用,并标记哪些应该更老,哪些不是。
答案 1 :(得分:0)
TimeSpan ts = DateTime.Now - Convert.ToDateTime(e.datecreated);
if (ts.TotalDays <= 180)
{
//perform some task
}