C#:验证DateTime是否处于升序中

时间:2017-01-09 02:03:46

标签: c#

我在下面有代码,可以为每个事件获取starttime。如何验证该时间现在是否按升序排列?

List<dynamic> list= new List<dynamic>();
foreach (var item in jsonData.x[0].y)
{
    list.Add(item.StartTime.Value);            
    Console.WriteLine(item.AdvertisedStartTime);            
}

现在我想根据时间验证List是否按升序排列。

UTC Time = 2017-01-09T02:05:00Z

以下

var list1 = list.OrderBy(x => x.TimeOfDay).ToList();     

它将按TimeofDay对列表进行排序,但实际上我想验证list是否按升序排列。

我应该如何处理这个问题?

2 个答案:

答案 0 :(得分:0)

list.OrderBy()使用asc命令,list.OrderByDescending()使用desc命令。如果要验证,可以使用DateTime方法CompareTo(),代码片段如下。

 DateTime dt1 = DateTime.Now;
 DateTime dt2=DateTime.Now+TimeSpan.FromDays(1);
 var value = dt2.CompareTo(dt1);
 value may be -1,0,1, means earlier, same, later

答案 1 :(得分:0)

答案

您可以使用foreach循环来确保DateTime中每个前进List实例的值大于或等于前一个{的值{1}}中的{1}}实例。

ForEach循环说明

DateTime循环按顺序遍历List中的每个实例,从foreach中的第一项开始,到List的最后一项结束。

以下是Microsoft关于List循环的官方文档:

https://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx

比较解释

List循环内部,我们使用foreach方法来比较foreach个实例。在C#中,CompareTo方法可用于比较相同类型的两个实例。

如果第一个实例位于DateTime内的实例之前,则返回CompareTo。如果第一个实例在CompareTo内的实例具有相同的位置(或在此情况下具有相同的-1值),则返回DateTime。最后,如果第一个实例跟随CompareTo内的实例,则返回0

以下是Microsoft关于CompareTo的官方文档:

https://msdn.microsoft.com/en-us/library/4ah99705

示例代码

1