Avatar billede frets Nybegynder
10. juli 2006 - 15:36 Der er 4 kommentarer og
1 løsning

Samle datoer funktion/rutine

Jeg har nogle datoer i et arraylist:
15-06-2006
16-06-2006
17-06-2006
18-06-2006
21-06-2006
22-06-2006
23-06-2006
25-06-2006
27-06-2006

Hvordan får jeg dem grupperet i klumper?
Eks. 15-06-2006 til 18-06-2006, 21-06-2006 til 23-06-2006, 25-06-2006, 27-06-2006
Avatar billede thomasabcd Nybegynder
11. juli 2006 - 01:14 #1
Måske:
DateTime begin = new DateTime("15","06","2006");
DateTime end = new DateTime("18","06","2006");
ArrayList myDates = new ArrayList();
foreach(DateTime dt in arrayList)
{
      if(dt>=beginTime && dt<=endTime)
      {
          myDates.add(dt);
      }

}
Avatar billede arne_v Ekspert
11. juli 2006 - 04:19 #2
komplet eksempel i .NET 1.x:

using System;
using System.Collections;

namespace E
{
    public class MainClass
    {
        public static ArrayList FindInterval(ArrayList total, DateTime start, DateTime end)
        {
            ArrayList res = new ArrayList();
            foreach(DateTime dt in total)
            {
                if(start <= dt && dt <= end)
                {
                    res.Add(dt);
                }
            }
            return res;
        }
        public static ArrayList[] FindGroups(ArrayList total, DateTime start, int ndays)
        {
            int span = (int)(((DateTime)total[total.Count-1])-start).TotalDays+1;
            ArrayList[] res = new ArrayList[(span-1)/ndays+1];
            for(int i = 0; i < res.Length; i++)
            {
                res[i] = FindInterval(total, start.AddDays(i*ndays), start.AddDays(i*ndays+ndays-1));
            }
            return res;
        }
        public static void Main(string[] args)
        {
            ArrayList lst = new ArrayList();
            lst.Add(DateTime.Parse("15-06-2006"));
            lst.Add(DateTime.Parse("16-06-2006"));
            lst.Add(DateTime.Parse("17-06-2006"));
            lst.Add(DateTime.Parse("18-06-2006"));
            lst.Add(DateTime.Parse("21-06-2006"));
            lst.Add(DateTime.Parse("22-06-2006"));
            lst.Add(DateTime.Parse("23-06-2006"));
            lst.Add(DateTime.Parse("25-06-2006"));
            lst.Add(DateTime.Parse("27-06-2006"));
            ArrayList[] groups = FindGroups(lst, DateTime.Parse("15-06-2006"), 3);
            foreach(ArrayList g in groups)
            {
                foreach(DateTime dt in g)
                {
                    Console.Write(" " + dt);
                }
                Console.WriteLine();
            }
        }
    }
}
Avatar billede arne_v Ekspert
11. juli 2006 - 04:20 #3
men det er meget fixere i .NET 2.0:

using System;
using System.Collections.Generic;

namespace E
{
    public class MainClass
    {
        public static List<DateTime>[] FindGroups(List<DateTime> total, DateTime start, int ndays)
        {
            int span = (int)((total[total.Count-1])-start).TotalDays+1;
            List<DateTime>[] res = new List<DateTime>[(span-1)/ndays+1];
            for(int i = 0; i < res.Length; i++)
            {
                res[i] = total.FindAll(delegate(DateTime dt) { return start.AddDays(i*ndays) <= dt && dt <= start.AddDays(i*ndays+ndays-1); });
            }
            return res;
        }
        public static void Main(string[] args)
        {
            List<DateTime> lst = new List<DateTime>();
            lst.Add(DateTime.Parse("15-06-2006"));
            lst.Add(DateTime.Parse("16-06-2006"));
            lst.Add(DateTime.Parse("17-06-2006"));
            lst.Add(DateTime.Parse("18-06-2006"));
            lst.Add(DateTime.Parse("21-06-2006"));
            lst.Add(DateTime.Parse("22-06-2006"));
            lst.Add(DateTime.Parse("23-06-2006"));
            lst.Add(DateTime.Parse("25-06-2006"));
            lst.Add(DateTime.Parse("27-06-2006"));
            List<DateTime>[] groups = FindGroups(lst, DateTime.Parse("15-06-2006"), 3);
            foreach(List<DateTime> g in groups)
            {
                foreach(DateTime dt in g)
                {
                    Console.Write(" " + dt);
                }
                Console.WriteLine();
            }
        }
    }
}
Avatar billede arne_v Ekspert
13. august 2006 - 22:50 #4
OK ?
Avatar billede arne_v Ekspert
05. oktober 2006 - 03:16 #5
??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester