Avatar billede nat Nybegynder
15. marts 2006 - 09:52 Der er 11 kommentarer og
1 løsning

c# metode til at tjekke om en dato ligger inden for en given uge

Hej eksperter,

Er der nogen der kan lave en metode der tjekker om en given dato ligger inden for den uge man er i, ugen går fra lørdag til fredag, f.eks. 11-03-2006 til 17-03-2006, det vil sige at datoen i dag (15-03-2006) ligger indenfor denne uge.

Det kan også være at det skal ligge som en funktion på sql serveren????
Avatar billede dr_chaos Nybegynder
15. marts 2006 - 09:58 #1
Du kan bruge noget i denne stil:

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)
        {
            Console.WriteLine(year + "/" + week + ":");
            DateTime dt = new DateTime(year-1, 12, 29);
            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(2000, 1);
            Test(2001, 1);
            Test(2002, 1);
            Test(2003, 1);
            Test(2004, 1);
            Test(2005, 1);
            Test(2006, 1);
        }
    }
}
Avatar billede dr_chaos Nybegynder
15. marts 2006 - 09:59 #2
Den beregner det helt korrekt.
Du skal bare ændre den så du tester om uge nummer i dagsdato er lige med uge nummer for den ønskede dato
Avatar billede nat Nybegynder
15. marts 2006 - 10:16 #3
Ja, men min uge går fra lørdag til fredag, hvordan får jeg den til at tjekke på det?
Avatar billede dr_chaos Nybegynder
15. marts 2006 - 10:28 #4
hmm prøver lige at kigge på det senere.
Avatar billede arne_v Ekspert
15. marts 2006 - 14:02 #5
ovenstående virker med ISO uge definition:
  - ugen starter med mandag
  - første uge i et år er den første uge med mindst 4 dage i året

din uge starter med lørdag - hvilken uge er første ug i året efter dit system ?
Avatar billede nat Nybegynder
20. marts 2006 - 11:57 #6
uge 1
Avatar billede arne_v Ekspert
20. marts 2006 - 13:12 #7
det havde vi gættet

:-)

men hvad er uge 1 ?
Avatar billede nat Nybegynder
08. juni 2006 - 13:16 #8
Hvad mener du med hvad er uge 1?
Avatar billede arne_v Ekspert
08. juni 2006 - 14:07 #9
hvis 1. januar er en onsdag starter uge 1 så i december eller først inde i januar ?

hvis 1. januar er en fredag starter uge 1 så i december eller først inde i januar ?

(det rigtige svar er: i december & først inde i januar)
Avatar billede nat Nybegynder
21. juli 2006 - 11:46 #10
Uge 1 er i "min" uge det samme som uge 1 i jeres uge, men man kan sige at

hvis fredag, lørdag, søndag er i uge 1, så hører mandag, tirsdag, onsdag, torsdag (fra uge 2) også til i min uge 1 - hvis det var det I mente, og så fremdeles.

Uge 1, 2007: fredag (6/1), lørdag (7/1), søndag (8/1), mandag (9/1), tirsdag (10/1), onsdag (11/1), torsdag (12/1)


Uge 29, 2007: fredag (21/6), lørdag (22/6), søndag (23/6), mandag (24/6), tirsdag (25/6), onsdag (26/6), torsdag (27/6)

Uge 30, 2007: fredag (28/6), lørdag (29/6), søndag (30/6), mandag (31/6), tirsdag (1/7), onsdag (2/7), tordag (3/7)

Gav det mere mening?
Avatar billede nat Nybegynder
26. juli 2006 - 09:09 #11
Er der ikke nogen der kan hjælpe????
Avatar billede nat Nybegynder
02. august 2006 - 10:18 #12
Never mind, fandt en anden måde at gøre det på. Tjekker først på uge, hvis datoen er i indeværende uge så tjekker jeg på om den er en mandag, tirsdag, onsdag eller torsdag, og hvis datoen er i indeværende uge minus 1 tjekker jeg på om datoen er en en fredag, lørdag eller søndag.
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
Kurser inden for grundlæggende programmering

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