加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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
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];
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读