Avatar billede testing Nybegynder
22. august 2007 - 12:48 Der er 13 kommentarer og
1 løsning

Uge nr

Nogle der ved hvordan man koder en uge nr klasse i c#
Avatar billede arne_v Ekspert
22. august 2007 - 12:54 #1
public static int Week1(int year, int mon, int day)
        {
            return (new CultureInfo("da-DK")).Calendar.GetWeekOfYear(new DateTime(year, mon, day), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
        }
        public static int Week2(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;
        }
Avatar billede arne_v Ekspert
22. august 2007 - 12:54 #2
Den sidste har en fordel: den regner rigtigt ....
Avatar billede testing Nybegynder
22. august 2007 - 13:10 #3
super :) smid et svar
Avatar billede mikkel_sommer Nybegynder
22. august 2007 - 13:33 #4
hvad med:

public static int getWeekNumber()
{
            DateTime d = DateTime.Now;
            int i = d.DayOfYear + 6;
            return i / 7;
}
Avatar billede mikkel_sommer Nybegynder
22. august 2007 - 13:36 #5
og hvis det ikke altid er det nuværende uge nummer som man vil finde:

public static int getWeekNumber(DateTime d)
{
            return (d.DayOfYear + 6) / 7;
}
Avatar billede arne_v Ekspert
22. august 2007 - 14:03 #6
svar
Avatar billede arne_v Ekspert
22. august 2007 - 14:03 #7
mikkel>

Der er en lidt kompleks ISO standard for ugenumre.

Nogle gange er 1. januar faktisk uge 53 og nogen gange er 31. december uge 1.
Avatar billede md_craig Nybegynder
24. august 2007 - 21:00 #8
arne v >

Hvilket ISO Standard er den udregning efter?... den virker imiddelbar noget mere kompleks end den tidligere DS/EN 28601:1993 som er erstattet af DS/ISO 8601:2005...

Uden at have læst DS/EN 28601:1993 selv, så ser jeg mange steder at første uge i et år er defineret ud fra den første Torsdag i et år ifl. den gamle standard... hvad er den nu?...

For umiddelbart virker det som en lidt smallere sag at udregne... så spekulerede på om det var blevet mere kompleks med den nye?
Avatar billede arne_v Ekspert
24. august 2007 - 21:14 #9
Saa vidt jeg ved er der kun en standard.

Den er kommer i forskellige udgaver gennem aarene.

Og jeg er overbevist om at reglerne for ugenumre ikke har aendret sig mellem
udgaverne.
Avatar billede arne_v Ekspert
24. august 2007 - 21:16 #10
Og det er rigtigt at uge 1 er den uge med den foerste torsdag. Det er ogsaa den uge
som indeholder 4. januar.
Avatar billede md_craig Nybegynder
25. august 2007 - 16:48 #11
Ja det er samme standard, standarden for: Dataelementer og udvekslingsformater. Informationsudveksling Angivelse af dato og tid... de 2 numre er udgave numre...

Der er faktisk en mellemliggende udgave mellem de to fra 2001...

Normalt bruger jeg:

        public static int WeekNum( DateTime date )
        {
            int dow = (int)date.DayOfWeek == 0 ? 7 : (int)date.DayOfWeek;
            return ( ( ( date.AddDays( 4 - dow ).DayOfYear + 6 ) / 7 ) + 0 );
        }

Men det er nok smag og behag hvad man mener der er mest overskueligt...
Avatar billede md_craig Nybegynder
25. august 2007 - 16:48 #12
Do'h

        public static int WeekNum( DateTime date )
        {
            int dow = (int)date.DayOfWeek == 0 ? 7 : (int)date.DayOfWeek;
            return ( ( date.AddDays( 4 - dow ).DayOfYear + 6 ) / 7 );
        }
Avatar billede md_craig Nybegynder
25. august 2007 - 17:08 #13
Grunden til interessen var lige at jeg har nogle ting der bruger overstående kode, så var interesseret i om der var nogle ting der havde ændret sig så jeg kunne få rettet det til om nødvendigt... Var såmænd bare derfor...
Avatar billede arne_v Ekspert
25. august 2007 - 18:11 #14
Den primære grund til at jeg bruger den lange formel er at den er sprog og
platform uafhængig.
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