Avatar billede peanut2000 Nybegynder
30. januar 2005 - 13:33 Der er 9 kommentarer og
1 løsning

skal bruge ugenr i stedet for hele datoen

hej eksperter

Har følgende kode som giver mig dato/mdr/år:

lblDato.Text = DateTime.Now.ToShortDateString()

Men jeg vil gerne have fat på ugenr i stedet for.

alt dette skal ske når formen startes

Nogen der kan hjælpe????
Avatar billede jakobdo Ekspert
30. januar 2005 - 13:40 #1
Prøv at kig på denne side:

http://konsulent.sandelien.no/VB_help/Week/
Avatar billede arne_v Ekspert
30. januar 2005 - 13:52 #2
Hvis du selv vil regne det ud:

    Public Shared Function WeekNumber(year As Integer, mon As Integer, day As Integer) As Integer
        Dim a,y,m,JD,d4,L,d1 As Integer
        a = (14 - mon) \ 12
        y = year + 4800 - a
        m = mon + 12*a - 3
        JD = day + (153 * m + 2)\5 + 365*y + y\4 - y\100 + y\400 - 32045
        d4 = (((JD + 31741 - JD Mod 7) Mod 146097) Mod 36524) Mod 1461
        L = d4 \ 1460
        d1 = ((d4 - L) Mod 365) + L
        WeekNumber = d1 \ 7 + 1
    End Function
Avatar billede peanut2000 Nybegynder
30. januar 2005 - 13:56 #3
men hvordan bruger jeg det???
Avatar billede arne_v Ekspert
30. januar 2005 - 14:04 #4
Jeg formoder du mener Jakobs link, fordi ovenstående funktion er nem at kalde.

(at indholdet af den virker kryptisk er en helt anden sag)
Avatar billede peanut2000 Nybegynder
30. januar 2005 - 14:11 #5
jeg er såden set ligeglad, bare jeg får det til at virke, linket er også c# og jeg bruger vb, så at få dit til at virke er helt fint med mig
Avatar billede jakobdo Ekspert
30. januar 2005 - 14:16 #6
Så brug arne_v eksempel!
Det kan næsten ikke være mere ligetil!

Så smider du funktionen ind i din kode:

Public Shared Function WeekNumber(year As Integer, mon As Integer, day As Integer) As Integer
        Dim a,y,m,JD,d4,L,d1 As Integer
        a = (14 - mon) \ 12
        y = year + 4800 - a
        m = mon + 12*a - 3
        JD = day + (153 * m + 2)\5 + 365*y + y\4 - y\100 + y\400 - 32045
        d4 = (((JD + 31741 - JD Mod 7) Mod 146097) Mod 36524) Mod 1461
        L = d4 \ 1460
        d1 = ((d4 - L) Mod 365) + L
        WeekNumber = d1 \ 7 + 1
    End Function

Og så kalder du den med:
lblDato.Text = WeekNumber(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day)
Avatar billede skytte_dk Nybegynder
31. januar 2005 - 10:48 #7
Brug dog den indbyggede funktion:

dim uge as integer:
uge =  DatePart("ww", Now, vbUseSystemDayOfWeek, vbFirstFullWeek)

Skift evt. datoen(Now) ud med den dato du ønsker at finde ugenr. på
Avatar billede arne_v Ekspert
31. januar 2005 - 11:00 #8
Hm.

1)  det er ikke en ægte .NET funktion (er gemt i namespace Microsoft.VisualBasic)

2)  den returnerer ikke altid det rigtige ugenummer

[re 2 - jeg er ikke helt klar over om de to sidste parametre kan ændres
så den returnerer det rigtige]
Avatar billede arne_v Ekspert
25. februar 2005 - 21:06 #9
peanut>

Tid at få afsluttet ?

Og et svar fra mig
Avatar billede -mundi- Nybegynder
25. februar 2005 - 21:11 #10
en lidt mere simpel version :-)

using System.Globalization;
public static int GetWeekNumber(DateTime inDate) {
    GregorianCalendar gCalendar = new GregorianCalendar();
    return gCalendar.GetWeekOfYear( inDate,CalendarWeekRule.FirstFourDayWeek,DayOfWeek.Monday );
}
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