如何以数字方式对日期进行排序

时间:2012-04-04 15:14:35

标签: c# datetime sorting

我想用数字排序一些日期(不是Date.compare())

我应该转换为什么类型的日期,所以我可以在客户端(JS)对表进行排序?

INT?时间戳?

以及如何?

5 个答案:

答案 0 :(得分:1)

使用DateTime.Ticks long类型。

答案 1 :(得分:1)

您无需将日期转换为任何内容即可对其进行排序:

new[] { DateTime.Now, DateTime.Now.AddDays(-1) }.OrderBy(d => d);

答案 2 :(得分:1)

使用Ticks property获取DateTime的数字表示。这是一个示例程序,由Ticks对它们进行排序:

    static void Main(string[] args)
    {
        var dates = new List<DateTime> { new DateTime(2011, 5, 31), new DateTime(2012, 7, 31), new DateTime(2010, 1, 31) };
        dates.OrderBy(d => d.Ticks).ToList().ForEach(d => Console.WriteLine(d.ToString()));

        Console.WriteLine("Press ENTER to exit...");
        Console.ReadLine();
    }

产生这个输出:

1/31/2010 12:00:00 AM
5/31/2011 12:00:00 AM
7/31/2012 12:00:00 AM
Press ENTER to exit...

答案 3 :(得分:0)

按照这样排序

Array.Sort(datetimearr[]);

使用此How to sort ArrayList of DateTime objects in descending order?

答案 4 :(得分:0)

只需将它们添加到基于IEnumerable<DateTime>的集合中,然后使用 LINQ 对它们进行排序,例如:

using System.Collections.Generic;
using System.Linq

...

List<DateTime> dates = new List<DateTime>();

dates.Add(new DateTime(2012, 04, 01));
dates.Add(new DateTime(2012, 04, 05));
dates.Add(new DateTime(2012, 04, 04));
dates.Add(new DateTime(2012, 04, 02));
dates.Add(new DateTime(2012, 04, 03));

List<DateTime> orderedDates = dates.OrderBy(d => d);

您不应该使用DateTime.Ticks,因为日期可比较。