webForumDet fria alternativet

Veckonummer

.NETur .NET

5 svar · 836 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Hej!

Jag tänkte använda denna kod för att visa aktuellt veckonummer:

Dim Datum As Date = "2006-03-03"
Dim gc As GregorianCalendar = New GregorianCalendar
Dim Week As Integer = gc.GetWeekOfYear(Datum, New CalendarWeekRule, DayOfWeek.Monday)
Response.Write("(" & Week & ")")

men enligt vecka.nu skall det aktuella veckonumret vara 9 inte 10 som det blir med denna kod. Vad är fel?

Medlem sedan sep. 2005156 inlägg
#2

Vad händer om du först talar om vilken den första dagen är på en vecka?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsfirstdayofweekclasstopic.asp

Medlem sedan maj 20018 027 inlägg
#3

Virtual skrev:

Vad händer om du först talar om vilken den första dagen är på en vecka?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsfirstdayofweekclasstopic.asp

Skulle default vara att första veckodagen är en fredag? Det låter nästan muslimskt. ;)

Jag undrar hur många det är, utöver svenskar, som anger tidpunkter med veckonummer. Kanske är så att funktionen ger fel veckonummer därför att det inte är någon som har brytt sig om att buggrapportera?

Medlem sedan mars 20011 346 inlägg
#4

Ah! Tackar..men vilken av "FirstFourDayWeek" eller "FirstFullWeek" är den korrekta?
Båda returnerar ju det korrekta veckonumret just nu.

Medlem sedan mars 20011 346 inlägg
#5

Tror detta var svaret på min fråga

I Sverige numreras veckorna enligt standarden ISO 8601:1988. Enligt denna så är vecka 1 den första veckan med minst fyra dagar. Andra länder använder andra varianter på temat.

Medlem sedan mars 20011 346 inlägg
#6

UlfT skrev:

Skulle default vara att första veckodagen är en fredag? Det låter nästan muslimskt. ;)

Jag undrar hur många det är, utöver svenskar, som anger tidpunkter med veckonummer. Kanske är så att funktionen ger fel veckonummer därför att det inte är någon som har brytt sig om att buggrapportera?

Låg nog nåt i det du sa, har ändrat koden till denna:

    Private Function ISOWeek(ByVal dt As DateTime) As Integer
        Dim calendar As GregorianCalendar = New GregorianCalendar
        Dim dotNetWeek As Integer = calendar.GetWeekOfYear(dt, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)
        If (dotNetWeek = 53) Then
            dotNetWeek = (calendar.GetWeekOfYear(dt.AddDays(7), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday) - 1)
            If (dotNetWeek = 0) Then
                dotNetWeek = 53
            End If
        End If
        Return dotNetWeek
    End Function
136 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)