微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#datetime数组

我有两个数组,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] 举报,一经查实,本站将立刻删除。

相关推荐