如何忽略时间比较不同格式日期?C#日期匹配技术问询
问题描述
用户在进行日期搜索时遇到问题:JSON返回的日期包含具体时间,而datetimepicker返回的是当天0点的日期时间,直接比较DateTime对象无法判定为同一天(比如2022-11-26T00:00:00和26.11.2022 12:42:09),需要仅比较日期部分来判定相等。现有C#代码如下:
private DateTime dateSelectedByUser = DateTime.Today; public async Task DateOnChange(ChangeEventArgs args) { var value = args.Value.ToString(); dateSelectedByUser = value == string.Empty ? DateTime.Today : DateTime.Parse(value); result = items.Where(item=> item.date == dateSelectedByUser ).ToArray(); }
修改方案
利用DateTime类型的Date属性即可解决问题,该属性会返回仅保留日期部分、时间为00:00:00的DateTime对象。修改筛选条件,分别取两个日期的Date属性进行比较:
修改后的代码:
private DateTime dateSelectedByUser = DateTime.Today; public async Task DateOnChange(ChangeEventArgs args) { var value = args.Value.ToString(); dateSelectedByUser = value == string.Empty ? DateTime.Today : DateTime.Parse(value); // 仅比较日期部分 result = items.Where(item => item.date.Date == dateSelectedByUser.Date).ToArray(); }
补充说明
- 如果
item.date是可空类型(DateTime?),需要先做空值判断避免空引用异常:result = items.Where(item => item.date.HasValue && item.date.Value.Date == dateSelectedByUser.Date).ToArray(); - 若涉及跨时区场景,建议先将所有日期统一转换为同一时区(比如UTC)后再取
Date属性比较,避免时区差异导致的日期判定错误。
内容的提问来源于stack exchange,提问作者Sarahrb
相关产品推荐
相关产品推荐

