如何判断文件是否创建于一个月前并正确实现该条件筛选逻辑?
筛选一个月前创建的文件的正确判断逻辑
没问题,我来帮你修正这个判断条件!你原来的代码if (f.CreationTime.Date < DateTime.Now)其实会把所有创建时间在当前时刻之前的文件都加入列表,这显然不是你想要的「一个月前」的筛选逻辑。
正确的实现方式
我们需要先计算出「当前时间往前推一个月」的时间点,再用文件的创建时间和这个时间点对比:
1. 精确到时分秒的筛选(严格早于一个月前的此刻)
如果需要精确判断文件创建时间是否早于当前时间减去一个月的完整时间(比如今天10:00,那一个月前的10:00之前创建的文件),可以这么写:
// 计算一个月前的时间点 var oneMonthAgo = DateTime.Now.AddMonths(-1); if (f.CreationTime < oneMonthAgo) { fileNames.Add(f.Name); }
2. 只比较日期部分(忽略时分秒)
如果只需要筛选创建日期早于一个月前的当天的文件(比如今天是2024-10-05,只要创建日期在2024-09-05之前的都算),可以用Date属性忽略时分秒的差异:
var oneMonthAgoDate = DateTime.Now.AddMonths(-1).Date; if (f.CreationTime.Date < oneMonthAgoDate) { fileNames.Add(f.Name); }
小提示
AddMonths(-1)方法会自动处理月份的边界情况,比如1月5号调用这个方法会得到去年12月5号,不用手动计算每个月的天数,非常省心。
内容的提问来源于stack exchange,提问作者Vladimir Sidorov
相关产品推荐
相关产品推荐

