我想对一些日期进行数字排序(不是 Date.compare())
我应该将日期转换成什么类型,这样我就可以在客户端(JS)上对表格进行排序?
诠释?时间戳?
如何?
使用DateTime.Ticks
它是long
类型。
使用Ticks 属性获取 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...
您无需将日期转换为任何内容即可对其进行排序:
new[] { DateTime.Now, DateTime.Now.AddDays(-1) }.OrderBy(d => d);
只需将它们添加到基于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
,因为日期是可比较的。