我有一个包含小时和分钟的日期的 DateTime 值列表:
List<DateTime> times = times = new List<DateTime>()
{
new DateTime(2019, 01, 01, 17, 00, 00),
new DateTime(2019, 01, 01, 18, 45, 00),
new DateTime(2019, 01, 01, 19, 00, 00),
new DateTime(2019, 01, 01, 19, 30, 00),
new DateTime(2019, 01, 01, 22, 30, 00)
};
DateTime current = DateTime.Now;
我把它们都放在一个 ComboBox 中,我想做一些算法,所以当我加载我的表单时,它会检查当前时间并找到最接近当前时间的值,然后选择包含的 ComboBox 项目那个小时。
我怎样才能做到这一点?我试图遍历它们并检查最少的时间,但这似乎不起作用。有更聪明的方法吗?
例如:如果当前时间是17:32,它会选择17:00,因为那是最近的。但是,如果当前时间是 18:20,它将选择 18:45,依此类推。
最佳答案
比较 DateTime
的 Ticks
属性 (MSDN)。它可以看作是整个日期和时间戳的线性表示,并且是可排序的。
做类似的事情
comboBox.SelectedItem = times.OrderBy(t => Math.Abs(t.Ticks - current.Ticks)).First()
关于c# - 寻找最近时间的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56034919/