You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# LINQ中提取DateTime时间部分并获取正确最小时间的方法

解决C# LINQ中仅提取DateTime最小时间部分的问题

嘿,这个坑我之前踩过!你现在的问题是直接对DateTime类型调用Min()时,它会同时比较日期和时间的整体值——1970年的那个日期本身远早于2015年,所以哪怕它的时间是14:52,整个DateTime对象的数值还是比2015年的12:32要小,自然返回了前者的时间。

要只针对时间部分取最小值,有两种常见的解决方式,看你需要的结果类型来选:

1. 直接获取最小的时间值(TimeSpan或字符串)

如果只需要时间部分的结果,不需要关联原始的日期,可以用DateTime.TimeOfDay属性——它会返回一个TimeSpan对象,仅包含时分秒信息:

// 获取最小的TimeSpan
var minTimeSpan = table1.Min(x => x.StartTime.TimeOfDay);
// 转成你需要的"hh:mm:ss"格式字符串
var minTimeString = minTimeSpan.ToString(@"hh\:mm\:ss");
// 输出就是 "12:32:44"

2. 获取对应时间最小的原始DateTime对象

如果你需要保留原始的DateTime对象(只是要时间最小的那个),可以用排序或者MinBy方法(.NET 6及以上支持):

// .NET 6+ 推荐用MinBy,性能更优
var timeWithMinTime = table1.MinBy(x => x.StartTime.TimeOfDay);
var minTime = timeWithMinTime.StartTime;

// 如果你用的是.NET 5或更早版本,用OrderBy+First()替代
var timeWithMinTime = table1.OrderBy(x => x.StartTime.TimeOfDay).First();
var minTime = timeWithMinTime.StartTime;

这样处理后,就会忽略日期部分,只比较时分秒,最终得到你想要的12:32:44对应的结果啦。

内容的提问来源于stack exchange,提问作者jitender singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 23:02:51