c# - 寻找最近时间的算法

标签 c# datetime

我有一个包含小时和分钟的日期的 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,依此类推。

最佳答案

比较 DateTimeTicks 属性 (MSDN)。它可以看作是整个日期和时间戳的线性表示,并且是可排序的。

做类似的事情

comboBox.SelectedItem = times.OrderBy(t => Math.Abs(t.Ticks - current.Ticks)).First()

关于c# - 寻找最近时间的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56034919/

相关文章:

c# - 识别新同步的文件 (WinSCP)

c# - 将 C# 对象数组序列化为字符串的最快方法

c# - .NET Core 2.0 上的智威汤逊

python - 值错误: time data does not match format (convert part of string to time)

javascript - 如何将 UTC 日期格式字符串解析为本地日期时间?

c# - bool ?比较 bool vs GetValueOrDefault vs ??运算符(operator)

c# - 如何将文本框的一部分设置为只读

PHP - 将数据库日期时间与当前日期时间进行比较

Java简单日期格式英国时间

php - Mysql - 查询DATETIME字段(索引)性能