格式化时间字符串的排序数组

本文关键字:排序 数组 字符串 时间 格式化 | 更新日期: 2023-09-27 18:04:18

我正在尝试对数组列表进行排序。

数组列表由时间格式的数据组成。

数组:

9:15 AM, 10:20 AM

我应该如何排序?

从下面的代码得到的结果是:

10:20 AM
9:15 AM
下面是我的代码:
String timeText = readFileTime.ReadLine();
    timeSplit = timeText.Split(new char[] { '^' });
    Array.Sort(timeSplit);
foreach (var sortedArray in timeSplit)
    {
        sortedTimeListBox.Items.Add(sortedArray);
    }

格式化时间字符串的排序数组

是的,因为你只是分割一个字符串,你只是排序数组字符串(意思是19之前,它不关心小数点)。要获得所需的排序,首先需要将其转换为DateTime,如下所示:

timeSplit = timeText
    .Split(new char[] { '^' });
    .Select(x => new { Time = DateTime.Parse(x), String = x })
    .OrderBy(x => x.Time)
    .Select(x => x.String)
    .ToArray();

这里,我们所做的是:

  1. 像之前那样分割字符串
  2. 创建一个新的匿名类型,包含原始字符串和转换为DateTime的字符串。
  3. 通过DateTime属性命令
  4. Select 'ed回原字符串
  5. 转换为数组

timeSplit现在包含您想要排序的字符串。

Array.Sort(timeSplit, delegate(string first, string second)
{
    return DateTime.Compare(Convert.ToDateTime(first), Convert.ToDateTime(second));
});