Avatar billede noobsaibot Nybegynder
27. september 2005 - 15:01 Der er 11 kommentarer og
1 løsning

Generere ugens datoer ud fra årstal og ugenummer.

Jeg vil gerne lave en kalender, hvor jeg genererer udatoer for en uge af gangen ud fra årstal og ugenummer.
Hvordam skal jeg gøre det?
Avatar billede noobsaibot Nybegynder
27. september 2005 - 15:08 #1
hovsa - stavefejl:
udatoer = ugedatoer.
hvordam = hvordan.
Avatar billede noobsaibot Nybegynder
27. september 2005 - 15:13 #2
Det jeg gerne vil, som en test, er at vise

Mandag d. ?? Tirsdag d.?? Onsdag d.?? osv i hver sin textbox.

Disse datoer skal selvfølgelig skifte når man vælger en anden uge/årstal
Avatar billede arne_v Ekspert
27. september 2005 - 15:41 #3
Jeg kan ikke finde en pæn løsning men her kommer en løsning:

using System;

namespace E
{
    public class Util
    {
        public static int WeekNumber(int year, int mon, int day)
        {
            int a = (14 - mon) / 12;
            int y = year + 4800 - a;
            int m = mon + 12*a - 3;
            int JD = day + (153 * m + 2)/5 + 365*y + y/4 - y/100 + y/400 - 32045;
            int d4 = (((JD + 31741 - JD % 7) % 146097) % 36524) % 1461;
            int L = d4 / 1460;
            int d1 = ((d4 - L) % 365) + L;
            return d1 / 7 + 1;
        }
    }
    class MainClass
    {
        public static void Test(int year, int week)
        {
            DateTime dt = new DateTime(year, 1, 1);
            while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) > 1)
            {
                dt = dt.AddDays(1);
            }
            while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) < week)
            {
                dt = dt.AddDays(1);
            }
            while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) == week)
            {
                Console.WriteLine(dt.ToString("dd-MMM-yyyy"));
                dt = dt.AddDays(1);
            }
        }
        public static void Main(string[] args)
        {
            Test(2005, 39);
            Test(2005, 40);
        }
    }
}
Avatar billede nielle Nybegynder
27. september 2005 - 18:54 #4
Jeg ved ikke om man nødvendigvis vil mene at den er pænere - men her er da et alternativ:

using System;
using System.Globalization;

namespace e651359
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            DateTime[] ThisWeek = GetWeek(2005, 39);
            foreach (DateTime DT in ThisWeek)
            {
                Console.WriteLine(DT);
            }
        }

        static DateTime[] GetWeek(int Year, int Week)
        {
            DateTime[] ResultWeek = new DateTime[7];

            CultureInfo CI = new CultureInfo("da-DK");
            Calendar Cal = CI.Calendar;
            CalendarWeekRule CWR = CI.DateTimeFormat.CalendarWeekRule;
            DayOfWeek FDoW = CI.DateTimeFormat.FirstDayOfWeek;

            DateTime DT = new DateTime(2005, 1, 1);

            while (Cal.GetWeekOfYear(DT, CWR, FDoW) != Week)
            {
                DT = DT.AddDays(7);
            }

            while (DT.DayOfWeek != FDoW)
            {
                DT = DT.AddDays(-1);
            }

            for (int i=0; i<7; i++)
            {
                ResultWeek[i] = DT;
                DT = DT.AddDays(1);
            }

            return ResultWeek;
        }
    }
}
Avatar billede nielle Nybegynder
27. september 2005 - 18:55 #5
Skulle selvfølgeligt have været:

DateTime DT = new DateTime(Year, 1, 1);

- i stedet for:

DateTime DT = new DateTime(2005, 1, 1);
Avatar billede noobsaibot Nybegynder
14. oktober 2005 - 20:42 #6
Jeg har ikke lige haft tid til at kigge nærmere på det, men i kan vel deles om point?
Avatar billede arne_v Ekspert
14. oktober 2005 - 20:47 #7
sagtens

og svar fra mig
Avatar billede arne_v Ekspert
14. oktober 2005 - 20:50 #8
nu fik jeg dem alle

jeg laver lige et 30 point spm. til nielle
Avatar billede arne_v Ekspert
14. oktober 2005 - 20:51 #9
Avatar billede noobsaibot Nybegynder
14. oktober 2005 - 21:16 #10
ups :)
Avatar billede arne_v Ekspert
18. november 2005 - 09:14 #11
check iøvrigt http://www.eksperten.dk/spm/665318?Esession=04c764a3e88e6a22de6c1fe2176f1531

vi er igang med at diskutere hvorvidt vi skal starte 28/12 fremfor 1/1
Avatar billede noobsaibot Nybegynder
18. november 2005 - 11:12 #12
okay -tak :)
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