当前位置: 首页 > 编程语言 > C#

排序日期和时间分享

时间:2023-04-11 02:42:16 C#

C#学习教程:对日期和时间进行排序我的评论:restStart1=15/02/1212.30PMrestEnd1=15/02/1201.30PMrestStart2=15/02/1211.00AMBreakEnd2=15/02/1212.00PMrestStart3=15/02/1212.00PMrestEnd3=15/02/1201.00PM我期待我的输出应该是这样的:restStart1=15/02/1211.00AMrestEnd1=15/02/1212.00PMrestStart2=15/02/1212.00PMrestEnd2=15/02/1201.00PMrestStart3=15/02/1212.30PMrestEnd3=15/02/1201.30PM请建议我解决此问题的最佳方法?我建议你想把原来的开始值和结束值配对,然后只按开始日期排序。首先,您必须将Start和End配对。例如class:publicclassBreak{publicDateTimeStart{get;放;}publicDateTimeEnd{get;varbreaks=newList(){newBreak(){Start=newDateTime(2012,2,15,12,30,0),End=newDateTime(2012,2,15,13,??30,0)...///ETC。}};varordered=breaks.OrderBy(s=>s.Start);foreach(varordinordered){System.Console.WriteLine(ord.Start);System.Console.WriteLine(ord.End);}编辑要创建成对的日期时间对象,您可以使用以下方法:vardtEnd=UnixTimeConverter(endDate,System.Convert.ToDecimal(gmtOffset));返回新的Break{Start=dtStart,End=dtEnd};您可以将所有DateTime放入数组或列表中,并使用标准方法对数组或列表进行排序,示例见此处:http://www.csharp-examples.net/sort-array在.NET中,DateTime实现了IComparable接口,因此很容易比较/排序这些变量。就是说,您可以有两个数组或一个矩阵,并分别对每个数组进行排序,因为从您的示例来看,您似乎是从开始列中获取一个值,从en列中获取一个值,等等……好像您只是想要对日期/时间对象进行排序。由于您发布的代码不是C#,我将做一些假设。首先:假设您在DateTime对象中有一个日期/时间组合。我假设你有一个列表。列表dateTimes=newList();dateTimes.AddRange(new[]{newDateTime(2012,02,15,12,30,00),//15/02/1212.30PMnewDateTime(2012,02,15,13,30,00),//15/02/1201.30PMnewDateTime(2012,02,15,11,00,00),//15/02/1211.00AMnewDateTime(2012,02,15,12,00,00),//15/02/1212.00PM新日期时间(2012,02,15,12,00,00),//15/02/1212.00PM新日期时间(2012,02,15,01,00,00),//15/02/12下午1:00});您可以像这样就地对它们进行排序:dateTimes.Sort();或者,如果你有一个数组或任何IEnumerable,你可以获得一个新的可枚举序列:IEnumerabledateTimes=new[]{newDateTime(2012,02,15,12,30,00),//15/02/1212.30PMnewDateTime(2012,02,15,13,30,00),//15/02/1201.30PMnewDateTime(2012,02,15,11,00,00),//15/02/1211.00AMnewDateTime(2012,02,15,12,00,00),//15/02/1212.00PMnewDateTime(2012,02,15,12,00,00),//15/02/1212.00PMnewDateTime(2012,02,15,01,00,00),//15/02/1201.00PM};varorderedDateTimes=dateTimes.OrderBy(dt=>dt);我就是这样做的我不知道你对它们的发送方式有什么具体要求,或者如果结束时间总是比开始时间晚1小时,这个例子只是展示了如何相应地对它们进行排序//GetYourInputValues()指的是你的计划拉动这些输入。//在你的帖子中没有明确说明你打算如何做到这一点。string[]inputValues=GetYourInputValues();//我们将构建的列表,然后排序,然后打印出来。列表sortedDateTime=newList();//将它们解析为DateTime变量foreach(varinputininputValues){DateTimeinputDate;如果(DateTime.TryParse(输入,inputDate))sortedDateTime.Add(inputDate);}//将它们升序排序(对于降序,翻转a和b值)sortedDateTime.Sort((a,b)=>a.CompareTo(b));//打印出新排序的值到console.foreach(DateTimedtinsortedDateTime){Console.WriteLine(dt.ToString("MM/dd/yyhh:mm:sstt")):}注意:如果你应该将每个开始/结束视为一对(以便它们始终在一起),然后您将不得不做一些小的更改(请参阅@mipe34答案)。否则,这里有一个完整的工作示例:以上就是C#学习教程的全部内容:排序日期时间分享,如果对大家有用,需要进一步了解C#学习教程,希望大家多多付出注意——staticvoidMain(string[]args){stringtext=@"breakStart1=15/02/1212.30PMbreakEnd1=15/02/1201.30PMbreakStart2=15/02/1211.00AMbreakEnd2=15/02/1212.00PM休息Start3=15/02/1212.00PM休息End3=15/02/1201.00PM";string[]splitted=text.Split(newstring[]{"n","r"},StringSplitOptions.RemoveEmptyEntries);IList开始=newList();IListends=newList();对于(inti=0;ix).ToList();ends=ends.OrderBy(x=>x).ToList();for(inti=0;i本文收集自网络,不代表立场,如涉及侵权,请点右联系管理员删除,转载请注明出处: