我想输出具有相同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]; }总结
以上是内存溢出为你收集整理的C#datetime数组全部内容,希望文章能够帮你解决C#datetime数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)