Avatar billede keepy Seniormester
12. juli 2010 - 23:39 Der er 14 kommentarer og
1 løsning

uge nr.

Hej

HVordan finder jeg nemmest uge nr. for en aktuel tid?? f.eks. idag er det uge 28.

Så jeg vil gerne have en int eller en string med uge nr. i.

på forhånd tak.
Avatar billede heinzdmx Nybegynder
12. juli 2010 - 23:42 #1
Følgende funktion returnere ugenr af den dag der bliver sendt afsted.

public static int GetWeekNumber(DateTime dtPassed)
{
        CultureInfo ciCurr = CultureInfo.CurrentCulture;
        int weekNum = ciCurr.Calendar.GetWeekOfYear(dtPassed, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
        return weekNum;
}
Avatar billede heinzdmx Nybegynder
12. juli 2010 - 23:47 #2
lidt mere udspiciferet hvad man kan vælge fra microsoft:
http://msdn.microsoft.com/en-us/library/system.globalization.calendar.getweekofyear.aspx

Evt skal System.Globalization tilføjes som using.

ser ud til jeg også var for hurtigt...

Ser ud til at man med fordel kan bruge

DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek i stedet for DayOfWeek.Monday

og

CalendarWeekRule.FirstDay i stedet for CalendarWeekRule.FirstFourDayWeek

sorry den lille dobbeltpost med forklaring...
Avatar billede keepy Seniormester
12. juli 2010 - 23:47 #3
Jeg leder efter noget lig denne
int aar = System.DateTime.Now.Year;
Avatar billede heinzdmx Nybegynder
12. juli 2010 - 23:55 #4
Så skal du vel bare lave følgende funktion:

public int System.DateTime.Now.Week
{
        get
        {
CultureInfo ciCurr = CultureInfo.CurrentCulture;
        int weekNum = ciCurr.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstFourDayWeek, DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek);
        return weekNum;
        }
}

Så du i princippet snyder din program til at tro at den ekstra funktion egentlig eksistere i syntaxen men kun er der hvis den her funktion er brugt.
Avatar billede arne_v Ekspert
13. juli 2010 - 02:47 #5
CalendarWeekRule.FirstDay er for USA

i Europa skal man bruge CalendarWeekRule.FirstFourDayWeek
Avatar billede arne_v Ekspert
13. juli 2010 - 02:50 #6
Men selv med CalendarWeekRule.FirstFourDayWeek og DayOfWeek.Monday så regner Calendar.GetWeekOfYear faktisk galt nogen gange (ihvertfald på Windows XP).

I.s.f. kan man bruge f.eks.:

        public static int WeekNum(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
13. juli 2010 - 02:51 #7
Vil man gerne have en pæn indpakning så kan man lave en extension method (der findes ikke extension properties !):

    public static class MyExtensions
    {
        private static int WeekNum(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;
        }
        public static int GetWeekNum(this DateTime dt)
        {
            return WeekNum(dt.Year, dt.Month, dt.Day);
        }
    }

så kan man bruge:

DateTime.Now.GetWeekNum()
Avatar billede keepy Seniormester
13. juli 2010 - 16:02 #8
Super tak fantastiske gode svar. super
Avatar billede keepy Seniormester
13. juli 2010 - 16:04 #9
tak
Avatar billede keepy Seniormester
13. juli 2010 - 16:07 #10
hvorfor kan jeg ikke give jer point, men kun mig selv??
Avatar billede arne_v Ekspert
13. juli 2010 - 18:22 #11
Vi skal foerst ligge et svar alle sammen.

Saa kan du saette flueben og fordele point.
Avatar billede arne_v Ekspert
26. september 2010 - 21:28 #12
Det er der så nu!
Avatar billede heinzdmx Nybegynder
26. september 2010 - 21:32 #13
Jeg lægger så også et svar..
Til hvis det skulle blive accepteret en dag
Avatar billede arne_v Ekspert
26. september 2010 - 21:53 #14
Det gjorde du allerede 12/7 !
Avatar billede heinzdmx Nybegynder
26. september 2010 - 21:57 #15
Opdagede jeg desværre først efter jeg havde trykket send..
Mente ikke der var grund til at lave endnu et indlæg her for at undskyld.. :)
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