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?
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?
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.
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