C#查找大于DateTime.Now的最近时间

时间:2017-06-06 18:20:21

标签: c# datetime

我努力让自己的小功能发挥作用。

我想做的事情:

我有一个解析日期时间的ObservableCollection,如

{"13:00","14:00,"17:00","22:00","22:00"}

我希望最接近的时间大于当前的DateTime.Now。

代码:

private DateTime GetNearestTime() {

    var nearestTime= (from x in TimeCollection
                      where x.MyTimeProperty.Ticks > DateTime.Now.Ticks
                      orderby x.MyTimeProperty.Ticks ascending
                      select x).First();
    return nearestTime;
}

我得到的是1值大于预期值。

编辑:

值以便更好地理解

var now = DateTime.Now.TimeOfDay // {18:32:35.4378850}

集合中的DateTime.TimeOfDay值。

[0:] 03:03:00
[0:] 05:03:00
[0:] 13:01:00
[0:] 17:16:00
[0:] 17:16:00
[0:] 23:01:00

该集合的类型为:

public class TimeData 
{
   public DateTime MyTimeProperty {get;set;}
}

1 个答案:

答案 0 :(得分:3)

如果您不关心日期部分,那么TimeOfDay是适当比较的属性:

private DateTime GetNearestTime() 
{
    var now = DateTime.Now.TimeOfDay;
    var nearestTime= (from x in TimeCollection
                      where x.MyTimeProperty.TimeOfDay > now
                      orderby x.MyTimeProperty.TimeOfDay ascending
                      select x).First();
    return nearestTime;
}

Ticks属性记录为:

  

此属性的值表示自公元1月1日午夜12:00:00(公历1月1日0:00:00到公历)以来经过的100纳秒间隔的数量,代表DateTime.MinValue。它不包括可归因于闰秒的刻度数。