我有两个数组,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
1,0
2,0
3,1
4,1
5,1
6,2
7,2
8,2
9,3
10,3
11,3
12,4
13,4
14,4
15,5
16,5
17,5
18,5
19,5
20,5
这是我尝试过的:
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]; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。