Я хочу, чтобы отсортировать некоторые даты численно (не Date.compare())Как сортировать дату численно
В какой тип я должен преобразовать даты, чтобы я мог сортировать таблицу на стороне клиента (JS) ?
int? Отметка времени?
и как?
Я хочу, чтобы отсортировать некоторые даты численно (не Date.compare())Как сортировать дату численно
В какой тип я должен преобразовать даты, чтобы я мог сортировать таблицу на стороне клиента (JS) ?
int? Отметка времени?
и как?
Использовать DateTime.Ticks
от long
.
Я был бы осторожен с этим. В соответствии с http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx - * Он не включает количество тиков, которые могут быть связаны с секундомерами. * – Yuck
Ticks представляет значение DateTime. И на самом деле Тикс использовал для сравнения дат. См. «Равные» или «Сравнить». –
@Yuck DateTime не обрабатывает секунды прыжка, поэтому я не понимаю, почему вы должны учитывать их при сортировке. – phoog
Вам не нужно скрытом дату ни к чему, чтобы отсортировать его:
new[] { DateTime.Now, DateTime.Now.AddDays(-1) }.OrderBy(d => d);
Просто сортировать его, как этот
Array.Sort(datetimearr[]);
Используйте этот How to sort ArrayList of DateTime objects in descending order?
Используйте Ticks property, чтобы получить численное представление DateTime. Вот пример программы, сортирует их по тиков:
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...
Просто добавьте их в коллекцию на основе 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
в качестве даты comparible.
Что вы подразумеваете под «численным»? Можете ли вы привести несколько примеров? – Oded