【问题标题】:How to sort date numerically如何对日期进行数字排序
【发布时间】:2012-04-04 15:14:35
【问题描述】:

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

我应该将日期转换成什么类型​​,以便我可以在客户端 (JS) 对表格进行排序?

int?时间戳?

怎么做?

【问题讨论】:

  • 你所说的“数字”是什么意思?你能举几个例子吗?

标签: c# datetime sorting


【解决方案1】:

使用DateTime.Ticks它是long类型。

【讨论】:

  • 我会小心的。根据msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx —— 它不包括可归因于闰秒的滴答数。
  • Ticks 代表日期时间值。实际上,Ticks 用于比较日期。请参阅 Equals 或 CompareTo 实现。
  • @Yuck DateTime 根本不处理闰秒,所以我不明白你为什么要在排序时考虑它们。
  • 反对者,很高兴看到我的回答有什么问题,请添加一些 cmets - 它可能对我和其他用户有用
【解决方案2】:

使用Ticks property 获取日期时间的数字表示。这是一个按 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】:

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

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

    【讨论】:

      【解决方案4】:

      就这样排序

      Array.Sort(datetimearr[]);
      

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

      【讨论】:

        【解决方案5】:

        只需将它们添加到基于 IEnumerable&lt;DateTime&gt; 的集合中,然后使用 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,因为日期是可比的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-29
          • 1970-01-01
          • 1970-01-01
          • 2016-11-07
          • 1970-01-01
          • 2021-08-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多