C#datetime数组
发布时间:2020-12-15 22:26:50 所属栏目:百科 来源:网络整理
导读:我有两个数组,array1具有从上午8点到下午2点的分钟的日期时间数据,而array2具有从同一天的早上8点到下午1点的日期时间数据. 我想输出具有相同datetime.hour的两个数组的索引号.并且它应该匹配array1中比array2晚的所有日期时间数据的最后一个可用索引号array
我有两个数组,array1具有从上午8点到下午2点的分钟的日期时间数据,而array2具有从同一天的早上8点到下午1点的日期时间数据.
我想输出具有相同datetime.hour的两个数组的索引号.并且它应该匹配array1中比array2晚的所有日期时间数据的最后一个可用索引号array2. 例如,如果我有两个这样的日期时间数组: DateTime[] dateTimes1 = new DateTime[] { new DateTime(2010,10,1,8,15,0),new DateTime(2010,30,1),45,2),9,3),4),5),6),7),8),11,9),10),11),12,12),13),14),13,15),16),17),14,18),19),20),}; DateTime[] dateTimes2 = new DateTime[] { new DateTime(2010,}; 它应该给我输出: 0,0 这是我尝试过的: int i = 0; int j = 0; while (i < dateTimes1.Length && j < dateTimes2.Length) { if (dateTimes1[i].Date == dateTimes2[j].Date && dateTimes1[i].Hour == dateTimes2[j].Hour) { list.Add(i); list2.Add(j); i++; } else if (dateTimes1[i] < dateTimes2[j]) { i++; } else if (dateTimes1[i] > dateTimes2[j]) { j++; } } for (int k = 0; k < list.Count; k++) { Console.WriteLine(list[k] + "," + list2[k]; } 但它不会在下午1点后输出索引号. 解决方法
你的两个名单的长度不一样.在while语句中,您尝试同时迭代两个不同长度的列表.
如果我理解你的要求你应该通过使用内循环来做这样的事情: DateTime[] dateTimes1 = new DateTime[] { new DateTime(2010,}; DateTime[] dateTimes2 = new DateTime[] { new DateTime(2010,}; int i = 0; while (i < dateTimes1.Length) { int j = 0; while (j < dateTimes2.Length)) { if (dateTimes1[i].Date == dateTimes2[j].Date && dateTimes1[i].Hour == dateTimes2[j].Hour) { list.Add(i); list2.Add(j); i++; } else if (dateTimes1[i] < dateTimes2[j]) { i++; } else if (dateTimes1[i] > dateTimes2[j]) { j++; } } } for (int k = 0; k < list.Count; k++) { Console.WriteLine(list[k] + "," + list2[k]; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |